[WEB安全]PHP伪协议总结
0x01 简介
首先来看一下有哪些文件包含函数:
include、require、include_once、require_once、highlight_file
show_source 、readfile 、file_get_contents 、fopen 、file
有哪些伪协议:
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:// — 处理交互式的流
0x02 详细解读
2.1 php://filter
php://filter用于读取源码,php://input用于执行php代码
?page=php://filter/read=convert.base64-encode/resource=../flag.php
2.2 file://协议
用于访问本地文件系统,不受allow_url_fopen与allow_url_include的影响
即file:// [文件的绝对路径和文件名]
?path=file:///var/www/html/flag.txt
2.3 php://input
php://input 可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行
php://input 可以用来生成一句话
利用该方法,我们可以直接写入php文件,输入file=php://input,然后使用burp抓包,写入php代码:
2.4 data://协议
利用data:// 伪协议可以直接达到执行php代码的效果,例如执行phpinfo()函数:
如果此处对特殊字符进行了过滤,我们还可以通过base64编码后再输入:
?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
2.5 zip://, bzip2://, zlib://协议
zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,不需要指定后缀名
如果网站允许我们上传压缩文件,我们也可以将php文件压缩后进行上传,再通过zip://协议执行。
以DVWA平台为例,我们将phpinfo.php文件进行压缩后上传:
通过zip://协议执行zip压缩包中的phpinfo.php文件:
0x03 总结
page=dict://127.0.0.1:80 #探测端口开放
page=gopher://127.0.0.1:6379/payload #对redis服务进行getshell等操作
文件包含漏洞防护:
1.使用str_replace等方法过滤掉危险字符
2.配置open_basedir,防止目录遍历
3.php版本升级,防止%00截断
4.对上传的文件进行重命名,防止被读取
5.对于动态包含的文件可以设置一个白名单,不读取非白名单的文件
6.做好管理员权限划分,做好文件的权限管理
0x04 参考链接
http://j0k3r.top/2018/04/07/php-wxy/
https://blog.csdn.net/Monsterlz123/article/details/93964916
[WEB安全]PHP伪协议总结的更多相关文章
- [WEB安全]SSRF中URL的伪协议
当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议 0x01 类型 file:/// dict:// sftp:// ldap:// tftp:// gopher:// file: ...
- 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...
- [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)
简介 原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/ 考察知识点:反序列化.PHP伪协议.数组绕过 ...
- A标签使用javascript:伪协议
一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...
- CTF 文件包含与伪协议
正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- javascript 伪协议
[javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...
- JavaScript中伪协议 javascript:研究
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...
- 伪协议触发onbeforeunload
根据MSDN描述,IE的onbeforeunload事件触发条件: 简单点来说就是页面URL发生改变时触发: * 关闭浏览器窗口 * 点击后退.前进.刷新.主页 * 点击链接到新页面 * 调用超链接的 ...
随机推荐
- 用JS实现输出两个数范围内的随机数
const rs = require("readline-sync"); function roundNum(min = 0, max = 0) { if (!isNaN(min) ...
- 【JAVA】JSP+layui框架 静态表格转化成数据表格
<table lay-filter="demo" class="layui-table" id="excTable"> < ...
- 页面、 ajax 、mock
页面1: //html <form action = "" method="post" name="loginForm"> & ...
- python Linux 环境 (版本隔离工具)
python Linux 环境 (版本隔离工具) 首先新建用户,养成良好习惯useradd python 1.安装pyenv GitHub官网:https://github.com/pyenv/pye ...
- 【转】关于TCP/IP,必须知道的十个知识点
本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. 一.TCP/IP模型 TCP/IP协议模型(Transmission Control Protoc ...
- keepalived实现nginx反向代理的高可用
实现keepalived调用脚本进行资源监控 keepalived调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整 vrrp_script:自定义资源监控脚本,vrrp实例根据脚 ...
- 洛谷 P1280 尼克的任务题解
题目链接:https://www.luogu.org/problem/P1280 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每 ...
- TODO 竞品分析方法——关于导航评测的一些笔记
参考:移动App性能评测与优化 chapter4讲了地图怎么测,虽然不测地图,但是里面有关竞品分析的部分写得非常好,很多解决方案真的很精彩.记录一下. 我之前的竞品分析测试,通常是很简单的竞品数据层面 ...
- 神经网络MNIST数据集分类tensorboard
今天分享同样数据集的CNN处理方式,同时加上tensorboard,可以看到清晰的结构图,迭代1000次acc收敛到0.992 先放代码,注释比较详细,变量名字看单词就能知道啥意思 import te ...
- thrift 安装
1.下载 去官网 https://thrift.apache.org/download 下载两个文件,下载地址 http://archive.apache.org/dist/thrift/0.9.3/ ...