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安全编程之加密功能
Oct 09 PHP
在字符串中把网址改成超级链接
Oct 09 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
PHP中的替代语法简介
Aug 22 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 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函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
django中的ajax组件教程详解
2018/10/18 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python补齐字符串长度的实例
2018/11/15 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python reques接口测试框架实现代码
2020/07/28 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
2013年高中生自我评价
2013/10/23 职场文书
运动会广播稿50字
2014/01/26 职场文书
回门宴父母答谢词
2014/01/26 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
财产公证书
2014/04/10 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
项目验收申请报告
2015/05/15 职场文书
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏