文件包含漏洞学习篇

原理

在开发中,程序人员一般会把重复使用的函数写到单个的文件中,需要使用的时候就会直接调用此文件,无需再进行重复的编写,这个调用文件的过程一般就称之为文件包含。
文件包含相关函数:include()、include_once()、require()、require_once()

漏洞产生原因

通过函数调用文件的时候,由于对包含的文件没有进行有效的过滤处理,就有可能被攻击者利用从而导致了Web目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意的代码

分类

1 本地文件包含(LFI)

本地文件包含就是通过浏览器包含Web服务器上的文件

2 远程文件包含(RFI)

远程文件包含就是通过浏览器包含第三方服务器上的文件,开启远程文件包含的条件是php.ini中的allow_url_fopen和allow_url_include

示例

以DVWA为实验靶机,分别演示本地文件包含、远程文件包含
本地文件包含:
在var/www/dvwa/vulnerabilities/fi创建一个phpinfo.php,写入如下代码
在这里插入图片描述然后在靶机运行,得到下面的页面,说明页面是成功包含进来的
在这里插入图片描述远程文件包含:
这里用虚拟机再搭建一个网站做实验,这里我以虚拟机搭建网站为例
在这里插入图片描述可以看到远程文件已经包含进去了,但是由于css和js的缺少,所有显得页面较为不好看

绕过方法

本地文件包含绕过
1.%00截断
2.路径长度截断
3.点号截断
远程文件包含绕过
1.?号绕过
2.#号绕过