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


Posted in PHP onMarch 03, 2021

命令注入

命令注入(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()函数执行有回显,将执行结果输出到页面上

passthru()函数

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

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

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

exec()函数

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

$command是要执行的命令

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

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

shell_exec()函数

string shell_exec( string &command)

&command是要执行的命令

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

反引号 ` 

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

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

popen()函数

resource popen ( string $command , string $mode )

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

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

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

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

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

> c:/1.txt', 'r' ); ?>

proc_open()函数

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

与Popen函数类似,但是可以提供双向管道

pcntl_exec()函数

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

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

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

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

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

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

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

PHP 相关文章推荐
php md5下16位和32位的实现代码
Apr 09 PHP
PHP用mysql数据库存储session的代码
Mar 05 PHP
PHP PDO函数库详解
Apr 27 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
Git命令之分支详解
Mar 02 #PHP
PHP之header函数详解
Mar 02 #PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 #PHP
php中array_fill函数的实例用法
Mar 02 #PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 #PHP
php框架知识点的整理和补充
Mar 01 #PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 #PHP
You might like
基于文本的访客签到簿
2006/10/09 PHP
php实现的在线人员函数库
2008/04/09 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php轻松实现文件上传功能
2016/03/03 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
关于js datetime的那点事
2011/11/15 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
python+opencv实现动态物体识别
2018/01/09 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
python处理excel绘制雷达图
2019/10/18 Python
Python ORM编程基础示例
2020/02/02 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
竞聘副主任科员演讲稿
2014/01/11 职场文书
请假条标准格式规范
2014/04/10 职场文书
优秀护士演讲稿
2014/04/30 职场文书
村抢险救灾方案
2014/05/09 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书