[SUCTF 2018]annonymous
我们进行代码审计
1 | <?php |
首先创建了一个匿名函数,会输出flag
接着openssl_random_pseudo_bytes(32)生成一个随机数,然后将其转成了十六进制,将其赋值给$hash
接着SUCTF_和hash拼接成一个新的函数名,函数会执行上面构造的匿名函数
所以,要想获得flag就只有两种办法,直接执行匿名函数,或者执行SUCTF_和hash拼接成的新函数
create_function()函数在创建之后会生成一个函数名为:%00lambda_%d
%d
是持续递增的,这里的%d
会一直递增到最大长度直到结束
方法一
Apache启动新的线程,这样这里的%d
会刷新为1,就可以预测了
写个脚本一直去刷新访问即可:
1 | import requestsimport requests |
得到flag
方法二
我们还可以对%00lambda_%d的%d进行爆破,从而执行该函数