create_function()
源码
|
思路
存在危险函数create_function(),可以适当构造执行系统命令,使用下面的参数即可
http://ctf.seek2.top:32814/?id=}system(%27cat%20/flag%27);// |
知识点
create_function() 是 PHP 的一个内置函数,它可以创建一个匿名的 lambda 函数,并返回这个函数的引用。这个函数的实现基于 eval(),因此它也存在执行任意 PHP 代码的风险。
当传入一个以 } 开头的字符串时,eval() 会认为当前的函数体已经结束,然后执行后面的代码。例如,以下代码:
$func = create_function('', '}system("chdir");//'); |
在这个例子中,create_function() 会创建一个如下的函数:
function ($args) { |
这个函数的主体是空的,然后执行 system("ls");。
// 在这里的作用是防止 "}system('chdir');" 被完整解析,导致语法错误。也可以使用 # 或 { 来达到同样的效果





