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伪协议总结的更多相关文章

  1. [WEB安全]SSRF中URL的伪协议

    当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议 0x01 类型 file:/// dict:// sftp:// ldap:// tftp:// gopher:// file: ...

  2. 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...

  3. [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)

    简介  原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/  考察知识点:反序列化.PHP伪协议.数组绕过   ...

  4. A标签使用javascript:伪协议

    一.前言 今天,遇到一个别人挖的坑,问题是这样的. 做了一个列表页,可以筛选数据,有很多筛条件.主要是有input复选框和<a>标签两种.如图: 其中房价的筛选条件使用<a>标 ...

  5. CTF 文件包含与伪协议

    正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...

  6. 【JavaScript】javascript中伪协议(javascript:)使用探讨

    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...

  7. javascript 伪协议

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  8. JavaScript中伪协议 javascript:研究

    将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...

  9. 伪协议触发onbeforeunload

    根据MSDN描述,IE的onbeforeunload事件触发条件: 简单点来说就是页面URL发生改变时触发: * 关闭浏览器窗口 * 点击后退.前进.刷新.主页 * 点击链接到新页面 * 调用超链接的 ...

随机推荐

  1. 【洛谷 P5341】 [TJOI2019]甲苯先生和大中锋的字符串(后缀自动机)

    题目链接 建出\(sam\),求出parent tree上每个点的\(endpos\)集合大小. 如果等于\(k\),说明到达这个点的都可以.给\((len[fa(i)],len[i]]\)的\(cn ...

  2. JavaScript之运算符

    (1)赋值运算符 // c+=1; // 相当于c=c+1; // console.log(a++); // 先将a的值赋值给表达式,a再加1 // console.log(++a); // a先加1 ...

  3. 详解html中的marquee属性

    转自:https://www.jb51.net/web/531309.html 该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可 ...

  4. saleae逻辑分析仪-串口

    安装软件 下载:https://www.saleae.com 连线 逻辑分析仪CHx分别连接UART的rx和tx 配置Logic 选择串口 设置波特率 还可以自定义显示方式 打开串口助手 波特率和Lo ...

  5. flask_mail使用

    python3里发送邮件使用smtplib模块,内置得,不用下载安装,直接导入即可 smtplib使用实例 import smtplib from email.mime.text import MIM ...

  6. SpringBoot+SpringCloud+vue+Element开发项目——集成Druid数据源

    添加依赖 pom.xml <!--druid--> <dependency> <groupId>com.alibaba</groupId> <ar ...

  7. 将Centos7的yum配置为阿里云的镜像(完美解决yum下载太慢的问题)

    2017-02-17 16:02:30 张老湿 阅读数 13768     http://mirrors.aliyun.com/help/centos?spm=5176.bbsr150321.0.0. ...

  8. 剑指Offer(二十三):二叉搜索树的后序遍历序列

    剑指Offer(二十三):二叉搜索树的后序遍历序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  9. 版本控制Git研究一

    对于Git的使用,早在2010年的时候,就已经开始了,接触它也是由于Android开发的原因,我们知道Android源代码的管理就是用的Git,而至今期间已经呆过几个不同的公司,不同公司对于代码的管理 ...

  10. 《hello-world》第九次团队作业:【Beta】Scrum meeting 1

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...