PHP执行系统命令函数实例讲解 |
命令注入 命令注入( 常见的执行系统命令的函数有
system()函数
system()函数执行有回显,将执行结果输出到页面上 <?php system("whoami");?> passthru()函数
和system函数类似, 执行有回显,将执行结果输出到页面上 <?php passthru("whoami");?> exec()函数
$command是要执行的命令
exec()函数执行无回显,默认返回最后一行结果 <?php echo exec("whoami");?> <?php $test = "ipconfig"; exec($test,$array); print_r($array); ?> shell_exec()函数
shell_exec()函数默认无回显,通过 echo 可将执行结果输出到页面 <?php echo shell_exec("whoami");?> 反引号 ` shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体,当禁用shell_exec时,` 也不可执行 在php中称之为执行运算符,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回 <?php echo `whoami`;?> popen()函数
函数需要两个参数,一个是执行的命令 函数不会直接返回执行结果,而是返回一个文件指针,但是命令已经执行 。
返回一个和 此指针可以用于 <?php popen( 'whoami >> c:/1.txt', 'r' ); ?> <?php $test = "ls /tmp/test"; $fp = popen($test,"r"); //popen打一个进程通道 while (!feof($fp)) { //从通道里面取得东西 $out = fgets($fp, 4096); echo $out; //打印出来 }pclose($fp);?> proc_open()函数
与Popen函数类似,但是可以提供双向管道 <?php $test = "ipconfig"; $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); ?> pcntl_exec()函数
path是可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本
<?php pcntl_exec( "/bin/bash" , array("whoami")); ?> 对这些危险函数,可以在php.ini中禁用,进行安全加固 到此这篇关于PHP执行系统命令函数实例讲解的文章就介绍到这了,更多相关PHP执行系统命令函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! |