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

文件包含漏洞学习

什么是文件包含漏洞

原理

web程序在处理文件包含功能时,没有进行严格的过滤和验证,导致用户可以通过构造特殊文件名,让服务器包含并执行一些恶意的文件,或者包含一些特殊的敏感文件,从而执行任意代码或获取一些敏感信息。

文件包含漏洞本质时一种注入型漏洞,我们通常把要执行的代码放在包含的文件中,文件中的任意代码都会被执行。

什么是包含?为什么要有包含这个功能?

我们以php为例,我们在写一段php代码的时候,通常会调用一些函数来实现我们想要的功能,但是不是所有我们想要实现的功能都能用已有定义的函数实现,所以就有了自定义函数等实现自己编程想法的功能,而文件包含的功能就是类似于这种的,php中的文件包含不在意文件的格式是什么类型的,只要文件中有可以解析的代码就都会被解析执行。

我们会将一些常用的代码段、函数或模板封装在一个文件中,等到需要应用到这个的时候我们就使用包含函数包含存放这些代码的文件,被包含的文件会被解析执行,这样做可以大量避免代码的复用率,减少代码的篇幅,也可以区块化管理代码,让维护更加简便但同时也衍生出了文件包含漏洞。

php中常用的包含函数

require():找不到被包含的文件会产生错误,并停止脚本运行
include():找不到被包含的文件只会产生警告,脚本继续执行
require_once():与require类似,区别是如果该文件的代码已经被包含,则不会再次包含
include_once():与include类似,区别是如果该文件的代码已经被包含,则不会再次包含

文件包含漏洞的类型

本地文件包含漏洞(LFI漏洞)

远程文件包含漏洞(RFI漏洞)

本地文件包含漏洞

在进行本地文件包含之前,我们要了解一下一些系统中的一些隐私文件的文件名和路径,这边就不说了

无限制文件包含漏洞

在实现文件包含的过程中,应用程序对用户输入的文件路径和名称没有进行任何限制或有效验证,导致攻击者可以随心所欲地让服务器包含任意文件,无论是服务器本地的系统文件、敏感信息文件,还是远程服务器上的文件。

我们通常利用../../ 来进行目录层级历遍,我们可以利用这个来跳跃目录层级,然后对目标文件进行包含执行

有限制文件包含漏洞

这个就是在上面的基础在实现文件包含的过程加上限制而已,原理都是一样的。那么有限制就有绕过,下面就是介绍几个绕过的手法

相关文章:

  • Redis 挂掉后高并发系统的应对策略:使用 Sentinel 实现限流降级与 SkyWalking 监控优化
  • 什么是:云边端一体化架构
  • Matlab/Simulink - BLDC直流无刷电机仿真基础教程(五) - animateRotorPosition脚本讲解与使用
  • Unity 几种主流的热更新方式
  • 【Java学习笔记】递归
  • 【白雪讲堂 】GEO兴起:AI搜索时代的内容优化新战场
  • 哈希表笔记(三)Java Hashmap
  • 用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]
  • AXI中的out of order和interleaving的定义和两者的差别?
  • mysql-窗口函数一
  • 缓存:缓解读库压力的高效方案与应用实践
  • Transformer架构的解耦重组现象
  • JVM——Java 虚拟机是如何加载 Java 类的?
  • RAG工程-基于LangChain 实现 Advanced RAG(预检索-查询优化)(下)
  • 记录搭建自己的应用中心-需求看板搭建
  • 如何解决 H5 远程收款的问题呢?
  • 计算机网络——HTTP/IP 协议通俗入门详解
  • 人工智能——DBSCAN 聚类算法
  • 前端面经-webpack篇--定义、配置、构建流程、 Loader、Tree Shaking、懒加载与预加载、代码分割、 Plugin 机制
  • Java学习手册:Spring 事务管理
  • 王毅谈金砖国家反恐和网络安全合作
  • 金砖国家外长会晤落幕,外交部:发出了反对单边霸凌行径的“金砖声音”
  • 新型算法助力听障人士听得更清晰
  • 坚持科技创新引领,赢得未来发展新优势
  • “ChatGPT严选”横空出世了,“DeepSeek严选”还要等多久?
  • 比熬夜更伤肝的事,你可能每天都在做