xctf-unserialize3


给了我一段代码,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";}

image.png

你可能感兴趣的:(xctf-unserialize3)