php危险函数可以执行linux系统命令,如果没有禁用相关函数,也没有对函数使用的参数进行严格有效的过滤,可能产生命令执行漏洞。

1.eval()函数

eval() 函数把字符串按照 PHP 代码来执行。最简单的一句话木马可以由eval()函数实现。<?php @eval($_POST[‘abc’]);?> 

通过POST方式提交恶意代码。类似函数assert()。

2.php 执行 linux 命令个函数

(1)exec() 允许执行一个外部程序。exec()函数用于执行一个外部程序,语法为:【exec(string $command[,array &$output[,int &$return_var ]]);】。

<?php

$command=”id”;

exec($command,$array);

print_f($array);

?>

将执行系统命令id并显示出来

(2)system() 允许执行一个外部程序并回显输出,类似于 passthru(

<?php

$v = system(‘netstat -tnlp’,$shell_return);

var_dump($shell_return);

var_dump($v);

?>

(3)passthru() 允许执行一个外部程序并回显输出,类似于 exec()。

<?php

$command=”id”;

passthru($command);

?>

(4)popen() 可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。

<?php
$test = “pwd”;
$fp = popen($test,”r”);           //popen 打一个进程通道
while (!feof($fp)) {                  //从通道里面取得东西
$out = fgets($fp, 4096);
echo $out;                             //打印出来
}
pclose($fp);
?>

(5)proc_open() 执行一个命令并打开文件指针用于读取以及写入。

<?php
$command = “pwd”;
$array = array(
array(“pipe”,”r”), //标准输入
array(“pipe”,”w”), //标准输出内容
array(“pipe”,”w”) //标准输出错误
);
$fp = proc_open($test,$array,$pipes); //打开一个进程通道
echo stream_get_contents($pipes[1]); //为什么是$pipes[1],因为 1 是输出内容
proc_close($fp);
?>

(6)shell_exec() 通过 Shell 执行命令,并将执行结果作为字符串返回。

<?php
$test = “cat /etc/passwd”;
$out = shell_exec($test);
echo $out;
?>

 

版权声明:本文为jihejihe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jihejihe/p/16923914.html