PHP-Wakeup魔术漏洞骚操作

本文介绍了在攻防世界中遇到的一个关于PHP Wakeup魔术方法漏洞的案例。通过分析代码和利用条件,展示了如何通过使序列化字符串中变量数量大于实际变量来绕过_wakeup()函数,主要影响PHP5<5.6.25和PHP7<7.0.10的版本。文中给出了构造payload的方法,并提供了Flag的获取过程。
摘要由CSDN通过智能技术生成

起因

前两天在攻防世界做题的时候,看到了一个Wakeup绕过的典型案例。正好拿来写一篇随笔记录。

在这里插入图片描述

案例

进入后,我们得到题目代码,我们现在需要读一下这个代码。
先对代码进行一个审计
__wakeup()很容易绕过,只需要令序列化字符串中标识变量数量的值大于实 际变量即可绕过__wakeup()函数
_wakeup()的绕过,大概应该是PHP5<5.6.25,PHP7 < 7.0.10 的版本存在wakeup的漏洞。当反序列化中object的个数和之前的个数不等时,wakeup就会被绕过。
( 在反序列化执行之前,会先执行__wakeup这个魔术方法,所以需要绕过,当成员属性数目大于实际数目时可绕过wakeup方法,正则匹配可以用+号来进行绕过。)
正则匹配这里匹配的是 O:4,我们用 O:+4 即可绕过(看到类似题才想到所以构造 payload
$a= new Demo(‘fl4g.php’);
b=serialize(a);
b=strreplace(′O:4′,′O:+4′,b);
KaTeX parse error: Expected '}', got 'EOF' at end of input: …ce('1:{','2:{',b);
echo base64_encode($b);

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值