[GXYCTF2019]禁止套娃
Posted H3h3QAQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GXYCTF2019]禁止套娃相关的知识,希望对你有一定的参考价值。
[GXYCTF2019]禁止套娃
老套路扫一下目录
用dirsearch 可以扫到/.git
(我第一次扫到了,第二次就没扫到了)
问了一下师傅,知道是.git
源码泄露
利用工具GitHack拿index.php
发现eval
来看一下这么多if
第一个if 常用的伪协议都被ban了
第二个if是正则匹配,?R表示引用当前表达式,所以一个合法的表达式可以是a(b();)
,括号和字符组成的,第三个if就过滤一些字眼。
试着报一下目录
利用scandir()
看到要使用scandir()
必须需要一个directory的,但是我们还没有办法去定义一个变量
所以,翻一翻大佬的wp
发现可以用localeconv()
但是返回的是数组
就需要用到了current()
所以构造payload:
/?exp=print_r(scandir(current(localeconv())));
看到了flag.php
这时候我们可以用到next()
本来想的是多next几下然后拿到flag
但是好像并不可以
但是!scandir()返回的返回值是个数组我们可以利用array_reverse()
将数组反转
然后在next()
构造payload:
/?exp=print_f(next(array_reverse(scandir(current(localeconv())))));
发现没有flag
QAQ 原来是flag.php
重新构造payload,利用highlight_file
输出:
/?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));
成功拿到flag
以上是关于[GXYCTF2019]禁止套娃的主要内容,如果未能解决你的问题,请参考以下文章