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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
php类常量的使用详解
Jun 08 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 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
thinkphp实现图片上传功能
2016/01/13 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
基于jquery的表格排序
2010/09/11 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
json的使用小结
2016/06/08 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
高中开学感言
2015/08/01 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS