作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:一切为了她​​​​​​​
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:可后来,除了梦以外的地方,我再也没有见过你

目录

一:初识文件包含漏洞

1.简析文件包含

2.文件包含漏洞

二:常见的文件包含函数

三:文件包含漏洞分类

1、本地文件包含

2、远程文件包含漏洞

四:通过php伪协议进行包含

1、通过file://包含

[1]、条件:

2、通过php://包含

[1]、条件:

[2]、作用:

3.通过Zip:// & zlib:// 协议包含

[1]、条件:

[2]、作用:

4.data://协议包含

[1]、条件:

[2]、作用:

[3]、用法:

5.phar://协议包含:

[1]、条件:


一:初识文件包含漏洞

1.简析文件包含

在程序员开发过程中,通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需在此编写,这种调用文件的过程一般被称为文件包含

2.文件包含漏洞

随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过就造成了文件包含漏洞。

二:常见的文件包含函数

1、include()
当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时之给出一个警告,然后继续向下执行。2、include_once()
功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次3、require()
Require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。4、require_once()
功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。5、highlight_file()、show_source()
函数对文件进行语法高亮显示,通常能看到源代码6、readfile()、file_get_contents()、
函数读取一个文件,并写入到输出缓冲7、fopen()
打开一个文件或者url

几乎所有的脚本语言中都提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP\ASP\ASP.NET程序中非常少,甚至没有文件包含漏洞的存在。

三:文件包含漏洞分类

1、本地文件包含

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

2、远程文件包含漏洞

本地文件包含和远程文件包含造成漏洞的原因是一样的,

当php.ini 中的配 置选项allow_url_fopen和allow_url_include为ON的话,则包含的文件可以 是第三方服务器中的文件,这样就形成了远程文件包含漏洞。

所以远程文件包含条件:     需要满足两个条件在php.ini中。当php.ini 中的配置选项

 allow_url_fopen:on   allow_url_include:on 

四:通过php伪协议进行包含

PHP伪协议事实上就是PHP支持的协议与封装协议

1、File://          -- 访问本地文件系统
2、http://          --访问http(s)网址
3、Phar://           --PHP归档
4、Php://          --访问各个输入/输出流
5、Zlib://          --压缩流
6、Data://          --数据
7、Glob://           --查找匹配的文件路径模式
8、ftp://        --访问ftp(s)URLs
9、ssh2://       --Secure Shell 2
10、rar://       --RAR
11、ogg://       --音频流
12、expect://        --处理交互式的流

1、通过file://包含

[1]、条件:

(1)    allow_url_fopen:off/on 都可以

(2)     allow_url_include:off/on都可以 [2]、作用:     用于访问本地文件系统,通常用于读取本地文件而且不会收到allow_url_fopen和allow_url_include的影响。     在include()/require()/include_once()/require_once()参数可控的情况下,如果导入非.php的文件,则仍按照php语法进行解析,因为这个是include()函数决定的。

2、通过php://包含

[1]、条件:

(1)allow_url_fopen:off/on都可以     (2)allow_url_include: 仅php://input 、php://stdin php://memory、 php://temp 需要on

[2]、作用:

 Php://伪协议有很多的用法,常用的就是

php://filter 用于读源码。

Php://input用于执行php代码 

Php://filter参数详解:

该协议的参数会在该协议路径上进行传递,多个参数都可以在一个路径上传递。具体参考如下:

resource=<要过滤的数据流>                  必须项。它指定了你要筛选过滤的数据流。

read=<读链的过滤器>            可选项。可以设定一个或多个过滤器名称,以管道符隔开

write=<写链的过滤器>            可选项。可以设定一个或多个过滤器名称,以管道符隔开

<;两个链的筛选列表>                      任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况                                                    应用于读或写链

转换过滤器:非常重要

convert.base64-encode
//等同于base64_encode(),base64编码convert.base64-decode
//等同于base64_decode(),base64解码

还有很多的过滤器,这里就不多讲了,后期会出一期博客专门来介绍

例子:使用php://filter配合转换器读取flag.php文件

php://filter/convert.base64-encode/resource=flag.php

利用php://input :   

此协议需要allow_url_include为on,可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。

php://input 是个可以访问请求的原始数据的只读流。 所以enctype="multipart/form-data" 的时候 php://input 是无效的。

3.通过Zip:// & zlib:// 协议包含

[1]、条件:

allow_url_fopen:off/on都可以的   allow_url_include :off/on都可以的 

[2]、作用:

zip:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。

4.data://协议包含

[1]、条件:

allow_url_fopen:on  allow_url_include :on

[2]、作用:

自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

[3]、用法:

Data://text/plain   Data://text/plain;base64,

5.phar://协议包含:

phar://协议与zip://类似,同样可以访问zip格式压缩包内容。

[1]、条件:

allow_url_fopen:off/on都可以的     allow_url_include :off/on都可以的

【web安全】——文件包含漏洞相关推荐

  1. Web安全——文件包含漏洞

    一.文件包含漏洞 原理     文件包含漏洞是"代码注入"的一种.其原理就是注入一段用户能控制的脚本或代码,并让服务端执行."代码注入"的典型代表就是文件包含. ...

  2. Web安全—文件包含漏洞(RFILFI)

    文件包含函数(RFI&LFI) ASP和JSP只能实现本地文件包含,PHP既可以本地文件包含也可以远程文件包含 1,文件包含漏洞简介: 在日常的应用开发中,开发者会将常用的功能模块单独实现,然 ...

  3. Web安全之文件包含漏洞

    什么是文件包含 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件.而无需再次编写,这种 文件调用的过程一般被称为文件包含. 例如:include "conn ...

  4. test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  5. Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    Web安全:文件包含漏洞测试. 文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , ...

  6. 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bz ...

  7. WEB漏洞—文件包含漏洞

    介绍 所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞.例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为"变量",那么这时程序员就会将该& ...

  8. WEB渗透之文件包含漏洞

    1.文件包含 1.1原理: 服务器执行的php文件中可能包含木马文件或者恶意代码 1.2漏洞产生原因 1.web采用include()等文件包含函数通过动态变量的方式引入需要包含的文件 静态包含使用i ...

  9. Web漏洞之文件包含漏洞

    公众号:黑客菌 分享更多技术文章,欢迎关注一起探讨学习 一.文件包含漏洞概述 1.漏洞介绍 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件 ...

  10. WEB安全基础-文件下载漏洞以及文件包含漏洞演示

    这个是下面演示的源码,看链接地址找对应文件 http://download.csdn.net/download/qq78442761/10224681 文件下载漏洞 登进网站后运行截图如下: 点击下载 ...

最新文章

  1. NOIP 2012 同余方程
  2. 想要自学深度学习?不用GPU,浏览器就够了
  3. xib中Autolayout的使用
  4. Java面向对象(二、继承)
  5. Mark一下 | 当当优惠码,实付满150减30 | + 荐书
  6. mysql登录不了了_登录不了MySQL的解决方法
  7. java线程interrupt用法_Java线程中interrupt那点事 | 学步园
  8. squid的简单介绍
  9. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度
  10. DriverManager 连接不同的连接池
  11. 安卓9.0官方系统升级包_想升级鸿蒙系统都来看看!华为新系统升级名单曝光:有你手机吗?...
  12. Nginx源码阅读(gdb 调试nginx文件) -- 解析配置文件
  13. 用caffe训练测试自己的图片
  14. Windows 编程[6] - 学习窗体生成的过程六: 最终的代码!
  15. Python和R语言的区别
  16. Git使用学习(七、版本回滚)
  17. 心理很难受,无法平静!
  18. WordPress数据库文章表(字段说明)
  19. mac 安装 Adobe CC XD
  20. 一个模仿水滴筹的项目(只是一个半成品)

热门文章

  1. IRM电源维修XRM65P50X3402高压发生器维修
  2. 从零开始配置腾讯云 CDN的设置教学
  3. Silverlight 4 - MVVM with Commanding and WCF RIA Services
  4. 计算机音乐谱东演员,抖音计算机乐谱有哪些 抖音计算机乐谱分享
  5. 集群升级:CBS迁移
  6. 谈一谈800公斤的牛怎么过承重700公斤的桥
  7. 箭杆织布机计算机控制系统,高速喷水织布机单片机控制系统设计 毕业设计论文.doc...
  8. 第一章 Java简介
  9. 微信视频压缩画质怎么办?微信发视频怎么不压缩画质
  10. PDF不能编辑怎么办,如何去掉编辑权限