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下一个非常全面获取图象信息的函数
Nov 20 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP连接access数据库
Mar 27 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
PHP编写RESTful接口
Feb 23 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP实现简单计算器小程序
Aug 28 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
PHP实现简易用户登录系统
Jul 10 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
PHP分页显示制作详细讲解
2006/10/09 PHP
一个好用的分页函数
2006/11/16 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
详解python eval函数的妙用
2017/11/16 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Django实现随机图形验证码的示例
2020/10/15 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
《逃家小兔》教学反思
2014/02/23 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python