深夜看到网友在群里问php和安全的问题,结果是一道CTF题,打开题目网址,如下图所示:
上面代码给出的提示信息,首先接受一个f作为GET参数,然后把f输入的内容当成了一个函数去调用。
我们看到有个flag的函数,那直接ctf.com/what_stops_you/index.php?f=flag 不久直接调用这个flag函数,并输出flag了吗?
事情肯定没有这么简单! 当我们输入f=flag时,页面提示这个函数被禁止调用了
当我们输入phpinfo时,果然可以调用phpinfo,在phpinfo页面,发现服务器上存在一个d52acdede27c55d76f02b5153b6b36d3.php的文件
根据刚才提示的源码信息 ,$a = ($f == 'highlight_file') ? $f(basename($_GET['fn'])) : $f();
可以得知,当f=highlight_file时,fn可以作为一个文件路径,可以我们可以把d52acdede27c55d76f02b5153b6b36d3.php这个文件包含进来
ctf/what_stops_you/index.php?f=highlight_file&fn=d52acdede27c55d76f02b5153b6b36d3.php
果然看到了刚才提示禁止调用flag函数的源码信息,接下来,直捣黄龙~
ctf/what_stops_you/index.php?filter=1&f=f\lag