文件包含:重复使用的函数写到单位文件中,在使用某个函数的时候,直接调用此文件,无需再次编写,这种调用文件的过程称为包含。
例如:留言页面,此页面一般包括:留言、查看留言、登录、注册。这四个过程都会连接数据库,则这个过程就可以理解成包含。
php为例:
include()-----文件报告包含失败时,脚本继续执行(include.php包含调用了inc.php)
include_once()-----与include()相同,文件只被包含一次
require()------文件包含失败时,会产生错误,直接结束脚本执行
require_once()---与require()功能相同,文件只会被包含一次
文件包含原因:参数用户可控、动态包含
------实际测试:include_once.php中包含了$path1,而path1用户可控,如果输入了path=info.php,则可以直接调用info.php(前提同目录下有info.php文件)
文件包含分为:本地包含核远程包含
文件包含配置(php.ini):
allow_url_fopen=on
allow_url_include=on----决定可以是否使用php伪协议
文件包含危害:
1、无视扩展名
可以包含图片等文件
2、无条件解析php文件
如果包含一个图片马,可以直接解析php代码
文件包含利用:
1、访问敏感文件
http://localhost:8080/wenjianbaohan/include_once.php?path=c:\windows|system32\drivers\etc\hosts
2、包含木马写shell
3、