[GXYCTF2019]Ping Ping Ping
一、题目简介
二、思路分析
1)多命令执行
2)绕过空格
3)绕过flag
三、解题步骤
1)查看当前目录
2)查看文件内容
3)flag 在注释中
四、总结
一、题目简介
进入连接后是一个「ping」的功能,参数 ip 传递的内容会被当做 ip 地址进行网络连通性测试。
很明显 flag 就在 falg.php 这个文件里面,但「查看」这个文件的过程并不会很顺利
2)绕过空格
提示我们过滤掉了「空格」,这很简单,我们使用 $IFS$9
绕过空格
3)绕过flag
成功绕过空格,但 「flag」又被过滤了。上面我们执行ls
命令的时候查询出了 flag.php、index.php 这两个文件名,能不能将这个执行结果拿来用一下呢?答案是肯定的,我们可以使用「反引号」,构造的payload如下
?ip=1;cat$IFS$9`ls`
特殊格式 $IFS$9
用来绕过空格,执行语句应该是下面这样
?ip=1;cat `ls`
反引号的「优先级」很高,会先执行反引号中的命令,而后在将执行的「结果」结果配合其他命令执行,也就是说,执行的语句时下面这样
?ip=1;cat flag.php index.php
命令执行后会查看这两个文件的内容,从文件的内容中就可以拿到 flag
三、解题步骤
1)查看当前目录
使用分号;
「执行多条语句」,在 url 地址栏中输入以下payload,查看当前目录下的文件
?ip=1;ls
当前目录下有两个文件:flag.php、index.php
2)查看文件内容
使用 $IFS$9
绕过空格,配合「反引号」的高优先级特性查看 flag.php 文件,payload如下
?ip=1;cat$IFS$9`ls`
文件内容如下
3)flag 在注释中
注释中的内容不会直接显示在页面中,右键查看「网页源代码」,获取 flag
四、总结
喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全