命令注入

一、php下的命令注入
1.1 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.sectop.com/ex1.php… 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 ""; 

  } 

  ?> 

1.2 php注入应用场景
对执行了外部程序或函数(如:ping)等命令的页面尝试构造命令注入

1.3 命令注入方法
管道命令 | 将管道前的输出作为管道后的输入
&& 前一条命令执行成功后,才执行后面的命令
&与 &&具有上面短路的性质
|| 前一条命令执行失败后,才执行下一条命令

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理