create_function()命令执行
本文最后更新于:2023年7月7日 下午
create_function()命令执行
| 1 |  | 
这里的重点是:
第五点的:
| 1 |  | 
extract()函数作用是:将数组值 赋值给数组名同名的变量
我们可以通过这里去产生 $code、$arg 变量
| 1 |  | 
$code('', $arg);  这一句十分重要
由于括号中使用的是逗号,我们一般的命令执行应该使用不了,参数不能控制。
了解到一种新的方法:create_function()代码注入
从
PHP 7.2.0开始,create_function()被废弃
文章:https://www.scnblogs.com/-chenxs/p/11459374.html
create_function($arg1,$arg2)会创造一个匿名函数,
函数的参数部分由 $arg1指定
函数体由 $arg2 指定
例如:
| 1 |  | 
会创建以下匿名参数:
| 1 |  | 
我们可以在 $arg2 进行改动,实现代码注入
如果$arg2 = }phpinfo();//   可以执行phpinfo()函数
原因:首先 } 将匿名函数的大括号}闭合了,然后 // 将后面的大括号}给注释掉了
所以,这之间就可以写相应的代码了
由于这里过滤了很多东西,但是恰好引入了 flag.php,其中一定存在相应的flag变量
所以我们可以使用 get_defined_vars()函数:返回所有已定义变量组成的数组
然后使用 var_dump()进行输出
这样就可以知道有关flag的变量名了
| 1 |  | 
例题:
[BJDCTF2020]EzPHP
create_function()命令执行
      https://leekosss.github.io/2023/08/24/create_function()命令执行/