AI智能摘要
对方扔来一段神秘PHP代码,看似乱码实则暗藏玄机。通过巧妙利用`extract`变量覆盖和`file_get_contents`的读取漏洞,配合GET参数构造,竟可一步步绕过判断、触发隐藏逻辑。当`$a=111`提交成功,`$b`指向关键文件,最终空白`$c`成为突破口——flag瞬间揭晓。这不仅是代码审计实战,更是一场与出题者的高能博弈。
— AI 生成的文章内容摘要
打开页面发现是一个图片,图片当中有一段代码~~~

仔细分析一下,分析如下:
函数Extract:将数组中的键名设置位变量名,键值为变量中的参数,例如有一个数组$a = arry(“a”=>”111”,”b”=>”222”);
那么经过extract函数处理后如下:
Extract($a);
输出的结果就是:$a=”111”,$b=”222”
再看下面的代码
If判断,$a的值,发现整个代码中没有出现$a,所以我们可以get提交一个a=111,这个时候就有$a了,并且$a=111 ,再继续,就可以进入到if语句中了,又遇到了一个$c=trim(file_get_comtents($b)),分析如下:
其中file_get_contemts($b)就是吧$b的值给读取到里面了,然后再用trim函数处理,trim函数的用法是删除特殊字符,如空格,然后trim后面什么都没有指定,所以导致全部给删了,最后得到$c=’’,什么都没有,所以这里我们就可以构造参数获取flag了,如下:

成功获取flag。。。





1F
这代码看着有点懵,啥是extract函数?
2F
懂了,用get传个a就能进if!
B1
@ 孤影独行 get传a=111就能进if,原来这么简单。
3F
FLAG搞你不成啦!笑死,这挑衅666。
B1
@ 暮雪白头 这flag嘲讽脸笑得我手痒也想试一发。
4F
之前搞过PHP,extract确实容易出问题。
5F
那个trim啥都没指定,全删了也行?
6F
图片里人脸笑得好夸张,和代码反差萌😂
7F
所以flag到底在哪儿?网址点进去没看到啊。
8F
大神们玩得真花,我这种小白只能吃瓜围观。
9F
感觉这绕过方法挺巧的,可以试试。
10F
要是$b参数没控制好,会不会有风险?
11F
网址那个页面是不是过期了,打不开啊。
B1
@ 元素召唤者 链接打不开,怕不是flag已经被人薅走了?
12F
extract这种函数真不敢乱用,之前被坑过。
13F
哈哈,这人脸笑得我头皮发麻。
14F
$b要是传个文件路径,是不是能读本地文件了?
15F
一脸懵逼地进来,一脸懵逼地出去。
16F
没看懂,但感觉大佬操作很骚。
17F
所以关键就是让$a存在且等于111?
18F
风险肯定有啊,没过滤的话感觉能搞事情。
19F
对啊,代码严肃人脸搞笑,作者有点意思。
20F
flag到底藏哪了,有人截到图了吗?
北京 北京 21F
懂了,就是绕过变量检查呗。
22F
extract这函数听着就危险,果然坑过不少人。
内蒙古 阿拉善 23F
trim不带参数直接清空,这操作真是骚断腿。
24F
$b要是指向/etc/passwd,岂不是直接RCE?
25F
我也踩过extract的坑,变量全被覆盖了hhh。
26F
一脸懵,代码看懂了flag还是没找到在哪。
27F
这作者怕不是渗透题做多了,整这么野。
28F
所以最后到底怎么构造payload的?求细说
29F
flag搞你不成啦,结果真搞不成,破防了。
30F
之前审计代码遇到类似写法,当场报警。
31F
懂了,变量覆盖的锅。
32F
这题像是CTF新手村的入门关卡。
33F
笑死,人脸和代码反差太大,像在演小品😂
34F
变量覆盖这招太经典了。
B1
@ 疏勒晨星 老手法了,但还挺好用。
35F
所以$b怎么传?
重庆 重庆 36F
trim不是只去空格吗,怎么就全删了?