文件包含知识学习总结


前言:

博主最近做了一些题有关于文件包含的,作为一个初学者,本文主要是拿来总结我所学习到的文件包含相关的内容,若有不对的地方,欢迎指出!

漏洞产生原因:

程序员一般会把重复使用的函数写入文件中,在需要使用某个函数时直接调用这个文件,这种文件的调用过程一般称为文件包含。而程序开发人员一般希望代码更加灵活,所有把被包含的文件设置为变量,用来动态调用,这样客户端就可以传入非预期的文件。
如果程序没有对文件的来源进行严格的审查,客户端就可以传入包含恶意代码的文件,导致文件包含漏洞。

文件包含相关的函数:

include():如果在包含过程中有错,只会提出警告,然后继续执行后续语句。
include_once():功能与include()函数相同,区别在于当重复调用同一文件时,程序只调用一次。

require():产生错误,例如找不到文件,就会停止执行。
require_once():功能同require相同,区别在于当重复调用同意文件时,程序只调用一次。

类型

远程文件包含漏洞(RFI):通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意代码,危害很大。
本地文件包含漏洞(LFI):只能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者可以控制的,所以一般攻击者都是包含一些固定的系统配置文件,从而去读取系统敏感信息。很多时候攻击者会结合一些特殊的文件上传漏洞,来进行攻击。

本地文件包含的利用

1.利用session.upload_progress进行文件包含利用
利用原理:利用session.upload_progress上传一个临时文件,该文件里有攻击者写的恶意代码,然后包含它,从而执行里面的代码。但是上传的临时文件很快就会被删除,我们需要条件竞争,赶在文件被清楚前利用就可以了。

2.java web
WEB-INF是JAVA的WEB应用安全的目录。在该目录下的web.xml文件中有某个文件的相关的映射的话,可以直接在页面访问这个文件,类似于文件包含。

3.伪协议利用
PHP提供了一些杂项输入/输出流,允许访问PHP的输入输出流、标准输入输出和错误描述符,内存中、磁盘备份的临时文件以及可以操作其他读取写入文件资源的过滤器。
1)php://input
用来接收POST数据。通过这个协议我们可以通过POST方法把我们的语句输入上去然后执行。
条件:
当enctype="multipart/form-data"的时候,php://input是无效的。
当php>5.0时,只有在allow_url_fopen=On时才能使用。
2)php://filter
它是一种元封装器,设计用于数据流打开时的筛选过滤应用。就是在读入或写入数据的时候对文件进行处理后输出的一个过程。
常用:

php://filter/read=convert.base64-encode/resource=flag.php
php://filter/resource=flag.php
#就是将读取到的flag.php内容通过base64编码输出
#convert.base64-encoe是一种过滤器

当然它还有其他的过滤器这里就不过多赘述了。
3)data://
一种数据流封装器,以传递相应格式的数据。当它与文件包含函数结合是=时,用户输入的data:\流会被当作php文件执行。
用法:

data://text/plain,
http://76b3d1f2-2bce-441e-8518-a90b86d30bdb.node4.buuoj.cn:81/?file=data://text/plain,<?php phpinfo();?>
data://text/plain;base64,
http://76b3d1f2-2bce-441e-8518-a90b86d30bdb.node4.buuoj.cn:81/?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+

4)file://
用于访问本地文件系统,且不受allow_url_fopen和allow_url_include的影响。
用法:
file://+文件路径,例如:http://www.baidu.com?file=file:///etc/passwd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值