什么是文件包含?
开发者在开发PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当做PHP来执行,这会为开发者节省大量的时间。
为了更好地使用代码的重用性,引入了文件包含函数,可以通过文件包含函数将文件包含进来,直接使用包含文件的代码。
文件包含漏洞如何产生的?
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
php.ini设置中allow_url_include=on/off 开关
开启意味可能存在远程包含(源程序代码可能存在过滤等情况),关闭意味不存在远程包含。
大多数web语言都可以使用文件包含操作,其中php语言所提供的文件包含功能太强大,太灵活,所以包含漏洞经常出现在php语言中。
漏洞分类:
根据包含的位置不同分为:
本地包含(LFI):包含本地的文件,当作脚本代码执行
远程包含(RFI):包含远程上的一些文件,当作脚本代码去执行
文件包含漏洞的前提:
服务器必须开启allow_url_include函数
在PHP中主要有以下几个包含函数
include
include_once
require
require_once
包含函数介绍:
include():
当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告&