攻防世界_web进阶区_unserialize3
点进去是这样不完整的代码,f12查看一下源码和网络中消息头有没有信息,发现没有
class xctf{
//类
public $flag = '111';
//public变量为111
public function __wakeup(){
//如果执行了wakeup方法就exit
exit('bad requests');
}
?code=
//传参
我们先试试序列化后的对象字符串传进去是啥反应
可以自己写个php代码将所给的类序列化为字符串
序列化后的字符串为O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
O(object):4(4个长度):“xctf”(名字):1(对象属性个数):{s(字符串):4(4个长度):“flag”;s:3:“111”;}
发现不行,执行了wakeup(),说明执行了unserialize()。
我们要知道,_wakeup()方法会在使用函数unserialize()时自动调用,但是当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。
所以我们只需要把1改成大于1的数就行