這個東西廢了我三天時間我去
我們在了解這哥漏洞前要先明白什麼是反序列化漏洞:
1.php反序列化漏洞也叫php物件注入,是乙個非常常見的漏洞,這種型別的漏洞雖然有些難以利用,但一旦利用成功就會造成非常危險的後果。漏洞的形成的根本原因是程式沒有對使用者輸入的反序列化字串進行檢測,導致反序列化過程可以被惡意控制,進而造成**執行、getshell等一系列不可控的後果。
2.實現這個漏洞需要一種魔法方法
例如:
_construct
_destruct
_sleep
_wakeup
_tostring
_construct和__destruct會在物件建立或者銷毀時自動呼叫,__sleep方法在乙個物件被序列化的時候呼叫,__wakeup方法在乙個物件被反序列化的時候呼叫。
_tostring當乙個物件被當作乙個字串被呼叫。
我們來看乙個例子(借用大佬)
使用此漏洞:
其核心思想是在整個程序空間內現存的函式中尋找適合**片斷(gadget),並通過精心設計返回**把各個gadget拼接起來,從而達到惡意攻擊的目的。構造rop攻擊的難點在於,我們需要在整個程序空間中搜尋我們需要的gadgets,這需要花費相當長的時間。但一旦完成了「搜尋」和「拼接」,這樣的攻擊是無法抵擋的,因為它用到的都是程式中合法的的**,普通的防護手段難以檢測。
反序列化漏洞需要滿足兩個條件:
1、程式中存在序列化字串的輸入點
2、程式中存在可以利用的magic函式
我們通過一道我不會的ctf題解釋一下
我們是通過構造payload將我們想讓指令碼執行的**輸入進去讓指令碼執行
我們構造:
o:6:」shield」:1:
就可一回顯出我們想要的pctf.php中的內容了
2.其實我們可以通過題目給出的**來自己寫一下指令碼自動生成序列化的**:
<?php
//flag is in pctf.php
class shield
} $x = new shield('pctf.php');
echo serialize($x);
?>
在網頁上開啟後得到
o:6:「shield」:1:
PHP序列化和反序列化漏洞
反序列化 序列化漏洞 例項 函式同名方法利用 反序列化逃逸 sites array google runoob facebook serialized data serialize sites echo serialized data php eol 輸出 a 3 class test a newt...
PHP反序列化漏洞
序列化簡單利用 serialize 序列化 使用函式serialize 可將例項序列化為字串 unserialize 反序列化 使用函式unserialize 可將序列化的字串還原 示例 class example unserialize get code 漏洞利用 構造漏洞利用的 儲存為test....
PHP反序列化漏洞
前幾天安恆月賽兩道web題中有一道題是關於php反序列化的,然後剛好前幾天剛好看過這個知識點,於是乎這次比賽才沒有爆零,總算是寫出來了一道題 doge 所有php裡面的值都可以使用函式serialize 來返回乙個包含位元組流的字串來表示。unserialize 函式能夠重新把字串變回php原來的值...