#
文件包含
-
原理
&
分类
&
利用
&
修复
1
、原理
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,
直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。
在包含文件的过程中,如果文件能进行控制,则存储文件包含漏洞
1.1
、分类
本地包含
-Local File Include-LFI
远程包含
-Remote File Include-RFI
差异原因:代码过滤和环境配置文件开关决定

2
、白盒审计:(
CTFSHOW
)
-
白盒发现:
1
、可通过应用功能追踪代码定位审计
2
、可通过脚本特定函数搜索定位审计
3
、可通过伪协议玩法绕过相关修复等
PHP
:
include
、
require
、
include_once
、
require_once
等
include
在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行
require
函数出现错误的时候,会直接报错并退出程序的执行
Java
:
java.io.File
、
java.io.FileReader
等
ASP.NET
:
System.IO.FileStream
、
System.IO.StreamReader
等
3
、黑盒分析:
-
黑盒发现:主要观察参数传递的数据和文件名是否对应
URL
中有
path
、
dir
、
file
、
pag
、
page
、
archive
、
p
、
eng
、语言文件等相关字眼
4
、利用
本地利用思路:
1
、配合文件上传
2
、无文件包含日志
3
、无文件包含
SESSION
4
、无文件支持伪协议利用
参考:
https://blog.csdn.net/unexpectedthing/article/details/121276653



自定义session文件 条件竞争访问session文件 触发创建新文件
session文件一般在linux中var/lib/php/session windows中是C://windows/Temp

