给了我一段代码,php,_wakeup(),反序列化过程中,会调用这个wakeup。
先上代码:
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=
所以要有反序列化的场景。代码给了提示:
- 对象:xctf
- 涉及函数:
__wakeup
- 传参:?code=
所以,可以想到,应该是?code=xxx
这个过程,涉及到了反序列化。
xctf对象中,有一个属性$flag='111'
,所以一般情况下,要对xctf进行反序列花,其对象应该为:O:4:"xctf",1,{s:4:"flag";s:3:"111"}
。
属性数值>属性真实个数时,就会跳过执行__wakeup()函数
所以需要了解这几个魔术方法的特性。
此处的问题在于反序列化的内容是用户可控的。
所以,payload可以为O:4:"xctf",2,{s:4:"flag";s:3:"111";}
网友评论