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 相关文章推荐
关于BIG5-HKSCS的解决方法
Mar 20 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
PHP 透明水印生成代码
Aug 27 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
浅谈php和.net的区别
Sep 28 PHP
php中Snoopy类用法实例
Jun 19 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
form自动提交实例讲解
Jul 10 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
Python 错误和异常小结
2013/10/09 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
如何利用python进行时间序列分析
2020/08/04 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
兼职学生的自我评价
2013/11/24 职场文书
公司道歉信范文
2014/01/09 职场文书
网络技术专业求职信
2014/02/18 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
投标邀请书范本
2015/02/02 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
公积金具结保证书
2015/05/11 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书