[GXYCTF2019]Ping Ping Ping

[GXYCTF2019]Ping Ping Ping

不经一番寒彻骨,怎得梅花扑鼻香。

若教眼底无离恨,不信人间有白头。

这次记录一道GXYCTF的题目,这个题目个人觉得还是很好的,有一种使人着急的心态,看到flag却不知道怎么读取,经过百般骚姿势才绕过,这类题应该好好总结;

打开题目看到如下的界面;看到了ip再来结合题目,得知是要ping了。这里我们可以运用命令链接符,进行命令的执行,漏洞的起因还是没将用户的输入进行过滤就进行了拼接,所以才会有这样的情况;

我们嵌入/?ip=127.0.0.1;ls 这里解释一下 ; 的原因 ; 作为命令链接符号的一种,表示执行完前面的命令之后接着执行后面的命令,顺接的关系;

除此之外还有一些命令连接符有:& %0a %0d | || 等等,

得到如下的界面

3qBjET.png

可以看到在该目录下有index.php和flag.php 我们继续输入指令127.0.0.1;cat flag.php

会有如下的反应,显示我们有空格,我们需要绕过空格,这里提供几种方法供大家使用:

< <> %20 %09 $IFS$9 IFS IFS等等

这里我着重解释一下$IFS$9是什么意思 $IFS是bash中的内部域分隔符,可以代替空格至于后面的$9数字是可以随意的,我之前看过资料,每个数字都有特殊含义,但是和前面的搭配都可以表示空格;

ok 我们继续嵌入;发现说过滤了flag;于是我们先来cat一下index.php进行看看代码,得到代码如下

3qBHvn.png

发现确实过滤了很多,看来得到flag要费不少力气,

这里介绍 三种方法:

先来我的第一种,是利用变量拼接,来做。看过我之前写的love_math的都因该知道php函数可以赋给一个变量,那么同理我们这里让字符串赋值给变量,给我的payload /?ip=127.0.0.1;b=fla;c=g;cat$IFS$9$b$c

3qBLD0.png

再来第二种方法,叫做内联执行 就是借用反引号来达到执行命令的要求, 大家可以在linux环境下打开终端测试一下就ok这个很简单,也好理解。我们只需要嵌入 /?id=127.0.0.1;cat$IFS$9`ls{再来一个反引号闭合,这里我打不出来了,抱歉,理解就好}

3qB7gs.png

第三种方法比较少用,就是借助bash命令或者sh命令来搞;这里因为之前看的index.php里面禁用了bash,所以我们这里使用sh来执行,具体代码如下

/?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw=$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|sh

3qBquq.png

ok~~~ flag到手了;

猜你喜欢

转载自www.cnblogs.com/Wanghaoran-s1mple/p/12426853.html