PHP执行系统命令函数实例讲解

 更新时间:2021年03月03日 09:38:33   作者:zl17822307869  
这篇文章主要介绍了PHP执行系统命令函数实例讲解,列举的都是一些常用的函数,有感兴趣的同学可以学习下

命令注入

命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者 bash 命令)的一种注入攻击手段。

常见的执行系统命令的函数有

  • system()
  • passthru()
  • exec()
  • shell_exec()
  • popen()
  • proc_open()
  • pcntl_exec()

system()函数

string system ( string $command [, int &$return_var ] )

$command为执行的命令,&return_var可选,用来存放命令执行后的状态码

system()函数执行有回显,将执行结果输出到页面上

<?php	system("whoami");?>

passthru()函数

void passthru ( string $command [, int &$return_var ] )

和system函数类似,$command为执行的命令,&return_var可选,用来存放命令执行后的状态码

执行有回显,将执行结果输出到页面上

<?php	passthru("whoami");?>

exec()函数

string exec ( string $command [, array &$output [, int &$return_var ]] )

$command是要执行的命令

$output是获得执行命令输出的每一行字符串,$return_var用来保存命令执行的状态码(检测成功或失败)

exec()函数执行无回显,默认返回最后一行结果

<?php	echo exec("whoami");?>
<?php 
$test = "ipconfig";
exec($test,$array);
print_r($array);
?>

shell_exec()函数

string shell_exec( string &command)

&command是要执行的命令

shell_exec()函数默认无回显,通过 echo 可将执行结果输出到页面

<?php	echo shell_exec("whoami");?>

反引号 ` 

shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体,当禁用shell_exec时,` 也不可执行

在php中称之为执行运算符,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回

<?php	echo `whoami`;?>

popen()函数

resource popen ( string $command , string $mode )

函数需要两个参数,一个是执行的命令command,另外一个是指针文件的连接模式mode,有rw代表读和写。

函数不会直接返回执行结果,而是返回一个文件指针,但是命令已经执行。

popen()打开一个指向进程的管道,该进程由派生给定的command命令执行而产生。

返回一个和fopen()所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用pclose()来关闭。

此指针可以用于fgets()fgetss()和 fwrite()

<?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()函数

resource proc_open (string $cmd ,array $descriptorspec ,array &$pipes [, string $cwd [, array $env [, array $other_options ]]])

与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()函数

void pcntl_exec ( string $path [, array $args [, array $envs ]] )

path是可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本
args是一个要传递给程序的参数的字符串数组。

pcntllinux下的一个扩展,需要额外安装,可以支持 php 的多线程操作。

pcntl_exec函数的作用是在当前进程空间执行指定程序,版本要求:PHP > 4.2.0

<?php
pcntl_exec( "/bin/bash" , array("whoami"));
?>

对这些危险函数,可以在php.ini中禁用,进行安全加固

到此这篇关于PHP执行系统命令函数实例讲解的文章就介绍到这了,更多相关PHP执行系统命令函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Thinkphp页面跳转设置跳转等待时间的操作

    Thinkphp页面跳转设置跳转等待时间的操作

    今天小编就为大家分享一篇Thinkphp页面跳转设置跳转等待时间的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP实现文件上传后台处理脚本

    PHP实现文件上传后台处理脚本

    这篇文章主要为大家详细介绍了PHP实现文件上传后台处理脚本,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • PHP7新特性foreach 修改示例介绍

    PHP7新特性foreach 修改示例介绍

    这篇文章主要介绍了PHP7新特性foreach修改内容介绍,非常不错,介绍的非常详细,具有参考借鉴价值,对php7新特征相关知识感兴趣的朋友一起学习吧
    2016-08-08
  • twig里使用js变量的方法

    twig里使用js变量的方法

    这篇文章主要介绍了twig里使用js变量的方法,结合实例形式对比分析了在twig中使用js变量的相关调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-02-02
  • thinkPHP5.1框架使用SemanticUI实现分页功能示例

    thinkPHP5.1框架使用SemanticUI实现分页功能示例

    这篇文章主要介绍了thinkPHP5.1框架使用SemanticUI实现分页功能,结合实例形式分析了SemanticUI扩展插件的定义及使用分页相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建

    Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建

    这篇文章主要介绍了Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • php删除数组指定元素实现代码

    php删除数组指定元素实现代码

    这篇文章主要介绍了php删除数组指定元素实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • thinkPHP5 ajax提交表单操作实例分析

    thinkPHP5 ajax提交表单操作实例分析

    这篇文章主要介绍了thinkPHP5 ajax提交表单操作,结合实例形式分析了thinkPHP5的ajax提交表单操作技巧,并附带说明了表单提交中的参数传递与处理技巧,需要的朋友可以参考下
    2017-11-11
  • PHP处理SQL脚本文件导入到MySQL的代码实例

    PHP处理SQL脚本文件导入到MySQL的代码实例

    通常在制作安装程式,数据备份程序的时候会要用到这样的代码,我看网上有是有不太多,而且有些也不是很好用,有时候这种代码直接用现成的可以节省很多时间,那么我就从stackoverflow转了一个过来,需要的朋友可以参考下
    2014-03-03
  • 用PHP生成excel文件到指定目录

    用PHP生成excel文件到指定目录

    这篇文章主要介绍了用PHP生成excel文件到指定目录的相关资料,需要的朋友可以参考下
    2015-06-06

最新评论