[i=s] 本帖最后由 zeke 于 2025-7-6 16:47 编辑 [/i]
WEB渗透测试工程师系统班250303期
第31节课作业
1.为什么会需要文件包含功能?
文件包含(File Inclusion)是编程和软件开发中的一项常见功能,主要用于将外部文件的内容嵌入到当前文件中。
避免重复:复用代码(如函数、配置),不用重复写。
模块化:拆分功能到不同文件,方便维护。
动态加载:根据条件切换内容(如多语言、主题)。
统一管理:集中修改配置或依赖项。
2.文件包含漏洞的原理是什么?
攻击者通过控制文件包含的路径参数,让程序加载并执行恶意文件,从而导致任意代码执行、敏感信息泄露等安全问题。
3.实操课程内讲解的文件包含漏洞靶场
这节课是搭建靶场,靶场搭建完毕
一、笔记标题:WEB渗透系统班-文件包含漏洞(一)+文件包含漏洞(二)
二、文章内容:
-
课程内容概要
格式:
主要知识点1:文件包含漏洞原理
文件包含严格来说不算漏洞,算功能,但是,由于包含、引用、读取、访问的文件不可控的性质,导致漏洞的产生
主要知识点2:文件包含-功能
include("../sql-connections/sql-connect.php");
10 个地方用到同样的 600 行代码
文件
如果调用了文件包含相关的函数,那么就可以直接解析执行文件内的 php 代码,不会受到文件类型的影响
主要知识点3:实例代码
<?php
$file = $_GET['file'];
include($file);
?>
1.txt
hello world!
2.txt
<?php phpinfo();?>
如果读取的文件是 php 代码类的文件,那么可以直接解析执行
如果不是 php 代码文件,那么就会将文件的原始内容直接输出出来
主要知识点4:漏洞分类
LFI: local file include(本地文件包含)
RFI:remote file include(远程文件包含)
- 需要满足两个前提php.ini 配置文件内
- allow_url_fopen allow_url_include 都要为 ON

附图:
知识点2:

知识点3:

知识点4:

2.重点知识与细节(针对本节课的核心内容进行详细记录,包含公式、代码、重要原理等)
概念解析
概念1:文件包含函数
include():用到文件就去读取使用,如果出错只会警告但代码会继续执行
Incluede_once():用到文件就去读取使用,如果出错只会警告但代码会继续执行(包含的文件只会读取一次,不会重复读取)
Require():如果发生错误,代码会停止执行
require_once():如果发生错误,代码会停止执行(包含的文件只会读取一次,不会重复读取)
概念2:利用
常见敏感目录:https://www.cnblogs.com/NBeveryday/articles/sensitvefile.html
概念3:php 伪协议
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
php://filter/read=convert.base64-encode/resource=文件名
php://input:将 post请求的数据当做代码执行
压缩类型:可以直接访问压缩包里面的子文件
zlib:// compress.zlib://压缩包名 (只能够执行 gz 后缀的压缩包)
zip://压缩文件绝对路径%23压缩文件内的子文件名
bzip://
phar://压缩文件绝对路径/子文件名 (可以使用相对路径也可以使用绝对路径)
bzip2://
data:// — 数据(RFC 2397) 执行代码
data://text/plain;base64,编码的代码
data://text/plain,原始代码
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — 安全外壳协议 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流
关键步骤
步骤1:无
步骤2:
步骤3:
相关代码(如果没有可省略)
附图:
php伪协议-file

php伪协议-http

php伪协议-filter

3.实操练习 和 解析(记录自己实操练习时的思路、解法,以及自己遇到的困难)
搭建靶场
4.个人总结(写下自己对本节课的理解、收获、困惑和需要进一步学习的内容)
本节课最大的收获是:学习了文件包含漏洞的原理和利用
仍然存在疑问的地方:暂无
需要课后深入学习的内容:漏洞实际操作