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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
PHP 5.0对象模型深度探索之对象复制
Mar 27 PHP
PHP cron中的批处理
Sep 16 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
php define的第二个参数使用方法
Nov 04 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php+mysql实现无限级分类
Nov 11 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
php 猴子摘桃的算法
Jun 20 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配置文件php.ini的路径的方法
2014/08/20 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
python动态加载变量示例分享
2014/02/17 Python
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python如何爬取网页中的文字
2020/07/28 Python
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
《美丽的公鸡》教学反思
2014/02/25 职场文书
班主任自我评价范文
2015/03/11 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers