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 相关文章推荐
让你同时上传 1000 个文件 (一)
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
openPNE常用方法分享
Nov 29 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
php简单socket服务器客户端代码实例
May 18 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP SESSION机制的理解与实例
Mar 22 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函数
2010/01/11 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
Web程序工作原理详解
2014/12/25 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
js控制input输入字符解析
2013/12/27 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python+pygame简单画板实现代码实例
2017/12/13 Python
python使用tornado实现简单爬虫
2018/07/28 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
python标准库OS模块详解
2020/03/10 Python
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
升职自荐书范文
2013/11/28 职场文书
供货协议书
2014/04/22 职场文书
初中班主任评语
2014/04/24 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
学校社团活动总结
2015/05/07 职场文书
培训感想范文
2015/08/07 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书