当前位置: 首页 > news >正文

CTF-Web学习笔记:文件包含篇

目录

​​引言​​

​​一、文件包含的核心原理​​

1. 什么是文件包含?

2. 漏洞成因

​​二、CTF中最常见的2类文件包含漏洞​​

​​1. 本地文件包含(Local File Inclusion, LFI)​​

​​2. 远程文件包含(Remote File Inclusion, RFI)​​

​​三、CTF实战:文件包含的“花式利用”技巧​​

​​技巧1:包含日志文件——窃取用户输入​​

​​技巧2:利用PHP封装协议——绕过路径限制​​

​​技巧3:目录穿越——突破文件路径限制​​

​​技巧4:结合文件上传——执行任意代码​​

​​四、CTF实战案例:一道LFI+日志泄露综合题​​

​​题目背景​​

​​解题步骤​​

​​五、总结与防御建议​​

​​对CTF选手的建议​​

​​对开发者的防御建议​​


引言​

在CTF(Capture The Flag,夺旗赛)的Web安全赛道中,​​文件包含漏洞(File Inclusion Vulnerability)​​ 是一类“看似简单却极具破坏力”的漏洞。它利用的是应用程序动态包含文件时,未对用户输入的文件路径做严格校验的缺陷,导致攻击者可以“操控”程序加载任意文件(甚至远程代码),最终实现敏感信息窃取、代码执行等目标。

本文将结合CTF实战场景,从基础概念到高阶利用,带你彻底掌握文件包含漏洞的“攻防密码”。


​一、文件包含的核心原理​

1. 什么是文件包含?

文件包含是编程语言中常见的功能(如PHP的includerequire,Java的@Include,Python的import),用于将外部文件的内容插入当前文件中执行。例如,一个PHP页面可能通过include($_GET['page']).php动态加载用户指定的页面。

2. 漏洞成因

若程序未对用户输入的文件路径(如$_GET['page'])做​​合法性校验​​(如路径白名单、格式过滤),攻击者可通过构造恶意路径,让程序包含任意文件(本地或远程),甚至执行恶意代码。


​二、CTF中最常见的2类文件包含漏洞​

​1. 本地文件包含(Local File Inclusion, LFI)​

攻击者通过控制包含路径,让程序加载服务器本地的敏感文件(如配置文件、日志文件、源码文件等)。

​关键条件​​:程序使用动态包含函数(如PHP的include/require),且未限制文件路径范围。

​典型利用场景​​:

  • 包含/etc/passwd(Linux系统用户信息)、/etc/shadow(Linux密码哈希)等系统文件;
  • 包含网站日志(如Nginx的access.log),从中提取用户输入的敏感数据;
  • 包含上传目录中的恶意文件(如用户上传的PHP木马)。
​2. 远程文件包含(Remote File Inclusion, RFI)​

攻击者通过控制包含路径,让程序加载​​远程服务器上的文件​​(需目标服务器开启远程文件读取功能)。

​关键条件​​:

  • 程序使用动态包含函数;
  • 服务器配置允许远程文件包含(如PHP的allow_url_include=On);
  • 远程服务器可被攻击者控制(或存在可读取的公开文件)。

​典型利用场景​​:

  • 包含远程服务器上的恶意PHP脚本(如http://attacker.com/shell.php),直接在目标服务器执行代码;
  • 利用远程文件存储的敏感数据(如http://attacker.com/flag.txt)获取Flag。

http://www.dtcms.com/a/303087.html

相关文章:

  • 阿里给AI To C战略戴上眼镜
  • 4.应用层自定义协议与序列化
  • JUC线程池: ScheduledThreadPoolExecutor详解
  • VMWARE -ESXI-ntp时间同步无法启动异常处理
  • Go-Elasticsearch Typed Client 使用命名、结构与约定
  • Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与误报率降低策略(369)
  • AI原生应用:从人机关系重构到数字空间革命
  • 【分布式版本控制系统】Git的使用
  • 力扣17:电话号码的字母组合
  • 若依【(前后端分离版)SpringBoot+Vue3】
  • Android通知(Notification)全面解析:从基础到高级应用
  • 数据结构:下三角矩阵(Lower Triangular Matrix)
  • Eigen 中矩阵的拼接(Concatenation)与 分块(Block Access)操作使用详解和示例演示
  • 秩为1的矩阵的特征和性质
  • WireShark 抓包
  • Spring Boot项目生产环境部署完整指南
  • 数学建模算法-day[13]
  • 判断回文链表【两种O(n)时间复杂度】
  • iOS WebView 调试实战,第三方脚本加载失败与内容安全策略冲突问题排查指南
  • 前端高级综合搜索组件 SearchBox 使用详解!
  • React中的合成事件解释和理解
  • 归档日志-binlog
  • C语言的各种区
  • 背包DP之混合背包
  • 解决安装anaconda3后如何打开anaconda navigator的问题
  • 解构远程智能系统的视频能力链:从RTSP|RTMP协议接入到Unity3D头显呈现全流程指南
  • 力扣刷题(第一百零一天)
  • 0728 哈希表折半查找树二叉树
  • 【mysql】创建视图查询当月累计销售额的案例
  • python案例分析:基于新能源汽车论坛评价数据情感分析的客户满意度研究,文本挖掘包括lda主题分析和词频分析、情感分析、网络语义分析