CTF Web安全

[SUCTF 2018]annonymous(php lambda)

Posted on 2020-02-28,1 min read

题目给出了源码

<?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__);

首先创建了一个$MY的匿名函数。会输出flag
然后创建$hash会在eval函数中。与SUCTF拼接。形成一个新的函数名
要想拿到flag就只有调用SUCTF_XXXX随机数的函数名。或者直接调用$MY
这里就要了解php中lambda函数
lambda函数在创建一个匿名函数后。会生成一个函数名为%00lambda_[0-999]
后面的数字会逐步递增。
我们可以通过遍历数字。来调用$MY的匿名函数
burp跑下就行

下一篇: 安恒月赛SSTI的新姿势→