命令注入攻击(Command Injection),是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。从而可以使用系统命令操作,实现使用远程数据来构造要执行的命令的操作。

      PHP中可以使用下列四个函数来执行外部的应用程序或函数:system、exec、passthru、shell_exec,四个函数的原型如下:

  • string system(string command, int &return_var)

 command 要执行的命令; return_var 存放执行命令的执行后的状态值。

  • string exec (string command, array &output, int &return_var)

command 要执行的命令,output 获得执行命令输出的每一行字符串,return_var 存放执行命令后的状态值。

  • void passthru (string command, int &return_var)

 command 要执行的命令,return_var 存放执行命令后的状态值。

  • string shell_exec (string command)

       command 要执行的命令,如下例所示,表示通过提交http://www.xxxxxx.com/ex1.php?dir=| cat /etc/passwd操作,执行命令变成了system("ls -al | cat /etc/passwd"),输出/etc/passwd 文件的具体内容。

       //ex1.php 

      <?php

      $dir = $_GET["dir"]; 

      if (isset($dir)) 

      { 

          echo ""; 

          system("ls -al ".$dir); 

         echo ""; 

      } 

      ?> 

 

 

比如这段代码可以构造输入参数让远程服务器执行“whoami”命令,ip=127.0.0.1|whoami