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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
使用php实现截取指定长度
Aug 06 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
php 学习资料零碎东西
2010/12/04 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
基于php下载文件的详解
2013/06/02 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
python开发利器之ulipad的使用实践
2017/03/16 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python3中zip()函数使用详解
2018/06/29 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
美国滑板店:Tactics
2020/11/08 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
保健品市场营销方案
2014/03/31 职场文书
预备党员公开承诺书
2014/05/28 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
介绍信的写法
2015/01/31 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书