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 相关文章推荐
PHP 的几个配置文件函数
Dec 21 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php比较两个字符串长度的方法
Jul 13 PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 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更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PDO::rollBack讲解
2019/01/29 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python实现调度算法代码详解
2017/12/01 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python绘制随机网络图形示例
2019/11/21 Python
Python使用Matlab命令过程解析
2020/06/04 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
药店主任岗位责任制
2014/02/10 职场文书
公司副总经理任命书
2014/06/05 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python