PHP CODE INJECTION
可以注入PHP代码直接执行的漏洞
一般都是后台使用了eval 函数,将我们的输入直接作为eval函数的参数,从而是的恶意的命令被执行
create_function
create会创建一个匿名函数,第一个参数是传入的参数,第二个参数是函数体
create_function(args,code)
返回回个函数名字符串
如
1 | $newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b); |
函数的执行过程
1 | function newfunc(){ |
**案例一:**漏洞代码
1 |
|
payload
1 | http://localhost/test1.php?sort_by=%27%22]);}phpinfo();/* |
还原执行过程
1 | $sort_function = ' return 1 * ' . $sorter . '($a["' . $sort_by '"]);}phpinfo();/* |
匿名函数执行
1 | function niming($a,$b){ |
call_user_func
call_user_func(yourfunc,yourargs)
//将参数传入函数,可传多个
call_user_func_array
call_user_func_array(yourfunc,yourargsarray)
//将索引数组的元素作为函数的参数
assert
eval
system
array_map
array_filter
array_walk