代码/命令执行:
system(),eval(),exec()等函数的传入参数是该漏洞攻击成功的主要原因;
相关函数,代码注入:
<?php
highlight_file(_FILE_);
$a='phpinfo();';
eval($a);
?>
Mixed eval(string code_str)
eval-把字符串作为PHP代码执行
Code_str是PHP代码字符串
Cknife
bool assert(mixed $assertion [, string $description ] )
assert-检查一个断言是否为FALSE
assertion 是字符串,它将会被当做PHP代码执行。
<?php
error_reportion(E_ALL);
highlight_file(_FILE_);
#$a='echo 12345;';
#assert($a);
$a='eval("echo`pwd`;")';
assert($a);
echo 123;
?>
123
<?php
highlight_file(_FILE_);
#$a='echo 12345;';
#assert($a);
$a='eval("echo`dir`;")';
assert($a);
echo "11111";
?>
mixed call_user_func(callable $callback [, mixed $parameter [, mixed $...]])
callback 是将被调用的回调函数,parameter是0个或以上的参数,被传入回调函数
可以传递任何内置的或者用户自定义的函数。
除了语言结构如:array(),echo(),empty(),eval(),exit(),isset(),list(),print()和unset()
<?php
highlight_file(_FILE_);
$a='system';
$b='pwd';
call_user_func($a,$b);
call_user_func('assert','phpinfo()');
?>
/var/www/html/rce/demo/phpcode
string create_function(string $args,string $code)
create_function-create an anonymous (lambda-style) function
args是要创建的函数的参数,code是函数内的代码。
<?php
highlight_file(_FILE_);
$a=create_function('$code','echo $code;');
$b='hello';
$a($b);
$a='phpinfo();';
$b=create_fuction(' ',$a);
$b();
?>
hello
array array_map(callable $callback,array $array1[, array $...])
array_map-为数组的每个元素应用回调函数
<?php
highlight_file(_FILE_);
$a=$_GET['a'];
$b=$_GET['b'];
$array[0]=$b;
$c=array_map($a,$array);
?>
bool usort(array &$array, callable $value_compare_func)
usort-使用用户自定义的比较函数对数组中的值进行排序
<?php
highlight_file(_FILE_);
usort(...$_GET);
#usort($_GET[1],'assert')
?>
${php代码}
${phpinfo()};
<?php
highlight_file(_FILE_);
${phpinfo()};
?>