天天看點

攻防世界web進階_unserialize3

攻防世界_web進階區_unserialize3

點進去是這樣不完整的代碼,f12檢視一下源碼和網絡中消息頭有沒有資訊,發現沒有

攻防世界web進階_unserialize3

class xctf{

//類

public $flag = '111';

//public變量為111

public function __wakeup(){

//如果執行了wakeup方法就exit

exit('bad requests');

}

?code=

//傳參

我們先試試序列化後的對象字元串傳進去是啥反應

可以自己寫個php代碼将所給的類序列化為字元串

攻防世界web進階_unserialize3

序列化後的字元串為O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}

O(object):4(4個長度):“xctf”(名字):1(對象屬性個數):{s(字元串):4(4個長度):“flag”;s:3:“111”;}

攻防世界web進階_unserialize3

發現不行,執行了wakeup(),說明執行了unserialize()。

我們要知道,_wakeup()方法會在使用函數unserialize()時自動調用,但是當序列化字元串表示對象屬性個數的值大于真實個數的屬性時就會跳過__wakeup的執行。

是以我們隻需要把1改成大于1的數就行

攻防世界web進階_unserialize3
php