题目给出了源码
<?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跑下就行