本地包含与远程包含
本地文件包含
文件包含:重复使用相同的代码
相关函数:include
、include_once
、require
、require_once
无论使用什么后缀,只要被文件包含相关函数导入,就会作为PHP代码执行。也就是说如果被导入的文件参数可控,就会造成上传任何文件都能拿下服务器。
相关函数区别
-
include 用到临时加载
-
include_once 检测之前是否加载过,如果有就不包含了
-
require 先加载,然后整合原有代码,然后一起执行[影响整体]
-
require_once 检测之前是否包含过,如果有就不包含了
文件包含并不是漏洞,任意文件包含才是漏洞,比如说任意文件包含包含了恶意文件
远程文件包含
默认情况下远程文件包含是不可用的,需要在设置中打开allow_url_include=On
。
- windows环境下,可以通过SMB文件共享来绕过
allow_url_include=On
注意:
文件包含是不能出现?
的,如果出现了就会报错。