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 相关文章推荐
域名查询代码公布
Oct 09 PHP
深入了解PHP类Class的概念
Jun 14 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
PHP中的替代语法简介
Aug 22 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP开发Apache服务器配置
Jul 15 PHP
golang 调用 php7详解及实例
Jan 04 PHP
php对象工厂类完整示例
Aug 09 PHP
PHP CURL使用详解
Mar 21 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页面跳转success与error方法概述
2014/06/25 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
深入理解Node module模块
2018/03/26 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Python3.x对JSON的一些操作示例
2017/09/01 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python人脸识别初探
2017/12/21 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
经贸日语专业个人求职信范文
2014/04/29 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
2014年学校工作总结
2014/11/20 职场文书
继承公证书格式
2015/01/26 职场文书
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技