file inclusion(文件包含)

1. 文件包含介绍

文件包含是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(如:include(),require(),include_once(),require_once())利用url去动态包含文件,如果此时没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
文件包含漏洞分为本地文件包含漏洞和远程文件包含漏洞,远程文件包含漏洞是因为开启了PHP配置中的allow_url_fopen选项,开启了这个选项之后,服务器允许包含一个远程的文件。

2. 文件包含原理

开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写。开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动太调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

3. DVWA实例操作

3.1 low level
在url后面的参数page=后面随便输入几个字母,报错,同时也暴露了服务器文件的绝对路径:C:\phpStudy\PHPTutorial\WWW\DVWA
在这里插入图片描述
构造url,修改page=后面的参数,hcl.txt是自己创建的一个文件,成功显示txt文件里面的内容。

在这里插入图片描述
查看ini里面的内容
在这里插入图片描述
我们看到配置文件中的Magic_guote_gpc选项为off,在php版本小于5.3.4的服务器中,当开启这个选项时,我们可以在文件名中使用%00进行截断,也就是说文件名中%00后的内容不会被识别。使用%00截断可以绕过某些过滤规则,例如要求page参数后面的后缀必须为php,这时就可以使用%00,在文件后面添加%00x.php就可以绕过

远程文件包含:
在kali上开启Apache服务,然后写入一个phpinfo.txt文件,浏览器访问,正常显示
在这里插入图片描述
然后,我们把这个链接包含到之前的page=后面即可

3.2 medium level
这几级别的代码增加了str_replace函数,对page参数进行了一定的处理,将“http://”、“https://”、"…/"、"…"替换为空字符,即删除。但是这个函数时不安全的,我们可以使用双写绕过替换,像 http:// 写成 htthttp://p://,当函数把http://删掉之后,就剩下http:// 从而进行了绕过。其他的绕过也是一样

3.3 high level
high级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。
这个我们可以利用file协议绕过防护策略。
file协议,简单的说明就是,当我们用浏览器打开一个本地文件时,用的就是file协议。
在这里插入图片描述

4. 个人感受

这个实验的过程中,虚拟机崩溃了,mysql一直运行不起来,因此后面的就是没有截图,做了一些思路,文件包含理解起来不难,我也就没再进行下去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值