开始什么都找不到,那就扫一下目录看看,发现一个.git,那就用githack把它下下来,
第一个if过滤了伪协议,第二个不懂,看了说是(?R)?,把前面那个(和后面那个)递归,形成a(b(c()))这样子的可以通过,最后把一些函数给过滤了。
这题考的是无参数rce,这个看懂了就会做了。
localeconv()
函数返回一包含本地数字及货币格式信息的数组,数组第一个值是 .
current()返回数组中的当前单元, 默认取第一个值,这样就把第一个值 . ,给取出来了
然后scandir返回指定目录中的文件和目录的数组,. 表示当前目录
最后用var_dump来输出到页面上
exp=var_dump(scandir(current(localeconv())));
发现flag文件在倒数第二个,那就先把数组顺序翻转,
array_reverse() 函数返回翻转顺序的数组。
在用next()将数组中的内部指针向前移动一位,就取到flag文件了
再用show_source来读取文件
exp=show_source(next(array_reverse(scandir(current(localeconv())))));
理解每个函数的作用,合理利用即可