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

4、DVWA——文件包含

文章目录

  • 一、文件包含概述
  • 二、low
    • 2.1 源码分析
    • 2.2 通关分析
  • 三、medium
    • 3.1 源码分析
    • 3.2 通关思路
  • 四、high
    • 4.1 源码分析
    • 4.2 通关思路
  • 五、impossible

一、文件包含概述

  文件包含是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include()require()include_once()require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

  与文件包含有关的函数:

  • include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。
  • include_once():和 include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
  • require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。
  • require_once():和 require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

  相关的 php.ini 配置参数:

  • allow_url_fopen = on (默认开启)
  • allow_url_include = on (默认关闭)

二、low

2.1 源码分析

<?php// The page we wish to display
$file = $_GET[ 'page' ];?> 

  分析:用 GET 方法接收文件路径,然后将其包含进来。服务器包含文件时,无论文件是否是 PHP 文件,都会尝试当做 PHP 文件来执行。如果文件内容确实是 PHP 文件,则会正常执行并返回结果,如果不是则会将文件内容回显到网页中,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

2.2 通关分析

(1)查看页面,服务器期望用户的操作是点击下面的三个链接,服务器会包含相应的文件,并将结果返回。
在这里插入图片描述

知识点:服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行。

(2)尝试点下面三个链接,看看出现什么情况。可见,确实是点击三个文件,页面会显示不同的内容,同时,注意到,使用GET传参。
在这里插入图片描述

在这里插入图片描述

(3)既然page参数可以被控制,直接用相对路径,访问上两级文件夹下的 fi.php 文件,构造出 payload:http://192.168.92.1:32769/vulnerabilities/fi/?page=../../hackable/flags/fi.php

在这里插入图片描述

三、medium

3.1 源码分析

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );?> 

  分析:代码增加了 str_replace 函数对 page 参数进行了过滤。将 http://https://替换为阻止远程包含漏洞,将../..\ 替换为阻止用相对路径访问文件。

知识点:使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。例如page=htthttp://p://时,str_replace函数会将http://删除,于是page=http://,成功执行远程命令。

3.2 通关思路

  直接双写绕过,payload:http://192.168.92.1:32769/vulnerabilities/fi/?page=..././..././hackable/flags/fi.php
在这里插入图片描述

四、high

4.1 源码分析

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit;
}?> 

  分析:使用 fnmatch 根据指定的模式来匹配文件名或字符串。该函数将检查 page 参数开头必须是否是 file,若是服务器才会去包含相应的文件。

知识点:只能包含file开头的文件,看似安全,我们依然可以利用file协议绕过防护策略。

4.2 通关思路

  使用file协议绕过,貌似file协议只支持绝对路径。

五、impossible

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit;
}?> 

  分析:Impossible级别的代码使用了白名单机制进行防护,page参数必须为“include.php”、“file1.php”、“file2.php”、“file3.php”之一,彻底杜绝了文件包含漏洞。

相关文章:

4、DVWA——文件包含

文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时&#xff0c;就可以通过php的某些特性函数&#xff08;i…...

产品经理如何进行需求管理

产品经理在进行需求管理时&#xff0c;可以遵循以下步骤&#xff1a; 1. 确定需求目标&#xff1a;明确产品的愿景和目标&#xff0c;确定需求管理的方向和重点。 2. 收集需求&#xff1a;与利益相关者&#xff08;包括用户、业务部门、技术团队等&#xff09;沟通&#xff0c;…...

【从0学习Solidity】2. 值类型详解

Solidity极简入门: 2. 值类型 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开发…...

框架分析(9)-Hibernate

框架分析&#xff08;9&#xff09;-Hibernate 专栏介绍Hibernate特性对象关系映射&#xff08;ORM&#xff09;数据库连接和事务管理查询语言&#xff08;HQL&#xff09;缓存机制透明的持久化操作对象的延迟加载事务管理 优缺点优点简化数据库操作跨数据库平台高度可定制性缓…...

JavaScript中的原型链(prototype chain)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的原型链⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏…...

设计模式之代理模式与外观模式

目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为…...

动手学深度学习(四)多层感知机

目录 一、多层感知机的从零开始实现 1.1 初始化模型参数 1.2 实现Relu函数 1.3 实现模型 1.4 训练 二、多层感知机的简洁实现 2.1 实现模型 2.2 训练 三、模型选择 3.1 训练误差和泛化误差 3.2 验证数据集和测试数据集 3.3 过拟合和欠拟合 3.4 代码实现 3.4.1 生…...

融云出海:社交泛娱乐出海,「从 0 到 1」最全攻略

9 月 21 日&#xff0c;融云直播课社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频社交应用&#xff1f; 欢迎点击上方小程序报名~ 本期我们翻到《地图》的实践篇&#xff0c;从赛道/品类选择、目标地区适配、用户增长、变现模式、本地化运营、跨国团队管理等方面完整描绘…...

生成式人工智能促使社会转变

作者&#xff1a;JEFF VESTAL 了解 Elastic 如何处于大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中&#xff0c;帮助用户将 LLM 提升到新的高度。 iPhone 社会转变&#xff1a;新时代的黎明 曾几何时&#xff0c;不久前…...

【STM32】SPI初步使用 读写FLASH W25Q64

硬件连接 (1) SS( Slave Select)&#xff1a;从设备选择信号线&#xff0c;常称为片选信号线&#xff0c;每个从设备都有独立的这一条 NSS 信号线&#xff0c;当主机要选择从设备时&#xff0c;把该从设备的 NSS 信号线设置为低电平&#xff0c;该从设备即被选中&#xff0c;即…...

javaScript:DOM(父子/兄弟)常用属性

目录 前言 一.父子关系 父子关系的常用属性 childNodes 获取所有的子节点 children 获取所有的子元素&#xff08;dom元素&#xff09; firstChild 获取元素的第一个子节点&#xff0c;相当于 childNodes[0] firstElementChild 获取元素的第一个元素 相当于 children[0]…...

笔记:linux中LED(GPIO)驱动设备树配置和用法

设备树中节点配置 设备树中的LED驱动一般是这样写&#xff0c;LED驱动可以控制GPIO的电平变化&#xff0c;生成文件节点很方便 leds: leds {compatible "gpio-leds";gpio_demo: gpio_demo {label "gpio_demo";gpios <&gpio0 RK_PC0 GPIO_ACTIV…...

能耗管理+分区温控成为开发节能、省电神器的关键!从此告别电费刺客时代

取暖器在人们脑海中最深刻的印象&#xff0c;就是费电&#xff01;而它耗电量大的原因&#xff0c;主要在于它是靠电能直接转化为热能&#xff1a;在取暖设备通电后&#xff0c;内部高电阻的电热丝发热&#xff0c;风机会将这股热量吹散到室内&#xff0c;从而达到全屋取暖的效…...

垃圾回收 - 复制算法

GC复制算法是Marvin L.Minsky在1963年研究出来的算法。说简单点&#xff0c;就是只把某个空间的活动对象复制到其它空间&#xff0c;把原空间里的所有对象都回收掉。这是一个大胆的想法。在此&#xff0c;我们将复制活动对象的原空间称为From空间&#xff0c;将粘贴活动对象的新…...

基于SpringMVC实现常见功能

基于SpringMVC实现常见功能 防止XSS攻击 XSS攻击全称跨站脚本攻击&#xff0c;是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS&#xff0c;XSS是一种在web应用中的计算机安全漏洞&#xff0c;它允许恶意web用户将代码植入到…...

MetInfo5.0文件包含漏洞

MetInfo历史版本与文件 环境在这里下载&#xff0c;使用phpstudy搭建 我们来看到这个index.php&#xff0c;如下图所示&#xff0c;其中定义了fmodule变量与module变量&#xff0c;其中require_once语句表示将某个文件引入当前文件&#xff0c;在这个代码中&#xff0c;通过r…...

【SpringBoot】SpringBoot实现基本的区块链的步骤与代码

以下是Spring Boot实现基本的区块链代码的步骤&#xff1a; 创建一个Block类&#xff0c;它表示一个区块&#xff0c;包含一个区块头和一个区块体。区块头包括版本号、时间戳、前一个区块的哈希值和当前区块的哈希值。区块体包含交易数据。 创建一个Blockchain类&#xff0c;它…...

Photoscan/Metashape 2.0.0中的地面激光扫描处理

在Metashape(原Photoscan)2.0.0, 结构化地面激光扫描和非结构化航空激光扫描都可以使用导入点云&#xff08;文件>导入>导入点云&#xff09;命令导入。导入时会保留所有点属性&#xff08;包括结构化信息&#xff09;。 本文讨论以下主题 如何将激光扫描数据导入项目&am…...

git快速使用

1、下载git 设置签名 2、基本概念 工作区&#xff1a;写代码的地方。 暂存区&#xff1a;.git的.index 工作区&#xff1a;.git 3、常用操作 本地codinggit init&#xff0c; 初始化一个本地仓库&#xff0c;项目根目录下会出现个.gitgit remote add origin gitgithub.com…...

java 实现代理模式

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许一个对象&#xff08;代理对象&#xff09;充当另一个对象&#xff08;被代理对象&#xff09;的接口&#xff0c;以控制对该对象的访问。代理模式通常用于以下情况&#xff1a; 远程代理…...

Janus-Pro-7B网络问题排查:遇到403 Forbidden等错误如何解决

Janus-Pro-7B网络问题排查&#xff1a;遇到403 Forbidden等错误如何解决 部署好Janus-Pro-7B服务&#xff0c;满心欢喜地准备调用时&#xff0c;屏幕上却弹出一个冷冰冰的“403 Forbidden”&#xff0c;或者连接超时、证书错误……这种瞬间从云端跌入谷底的感觉&#xff0c;相…...

Feather生态系统探索:从R包到Python包装器的完整技术栈

Feather生态系统探索&#xff1a;从R包到Python包装器的完整技术栈 【免费下载链接】feather wesm/feather: 是一个用于在 Python 和 R 之间传输数据的轻量级数据格式库。适合对数据科学和数据分析有兴趣的人&#xff0c;特别是需要在 Python 和 R 之间进行数据交换的人。特点是…...

sing-box常见问题排查:99%的用户都会遇到的坑

sing-box常见问题排查&#xff1a;99%的用户都会遇到的坑 引言 sing-box作为一款功能强大的通用代理平台&#xff08;The universal proxy platform&#xff09;&#xff0c;在使用过程中难免会遇到各种问题。本文将针对用户最常遇到的配置错误、连接失败、日志分析等问题提供…...

5种多屏显示优化方案:专业用户的DPI精准控制指南

5种多屏显示优化方案&#xff1a;专业用户的DPI精准控制指南 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 场景痛点&#xff1a;跨行业的显示一致性难题 内容创作者的显示困境 视频剪辑师张明在4K主显示器上精心调整的画面比例&…...

OpenClaw故障排查:千问3.5-9B接口连接问题解决大全

OpenClaw故障排查&#xff1a;千问3.5-9B接口连接问题解决大全 1. 问题背景与排查思路 上周我在本地部署OpenClaw时&#xff0c;遇到了对接千问3.5-9B模型的连接问题。作为一个开源AI智能体框架&#xff0c;OpenClaw需要稳定接入大模型才能发挥自动化能力。但在实际配置过程中…...

AI训练数据处理与标签管理:提升标注效率的完整指南

AI训练数据处理与标签管理&#xff1a;提升标注效率的完整指南 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 在AI模型训练过程中&#xff0c;数据质量直接决定模型效果&#xff0c;而标签管理是数据预…...

vLLM推理引擎教程8-CUDA Graph内存池优化

1. CUDA Graph内存池优化原理 在vLLM这类大模型推理引擎中&#xff0c;CUDA Graph技术已经成为提升性能的标配方案。但很多开发者在使用过程中会遇到一个棘手问题&#xff1a;当需要处理不同batch size的请求时&#xff0c;显存碎片和重复分配会导致性能下降。这时候就需要引入…...

Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解

Graphormer多任务预测指南&#xff1a;property-guided与catalyst-adsorption双模式切换详解 1. Graphormer模型概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。这个创…...

图像去雾新思路:当无监督学习遇上注意力机制(CycleGAN+SK Fusion深度解析)

图像去雾新思路&#xff1a;当无监督学习遇上注意力机制&#xff08;CycleGANSK Fusion深度解析&#xff09; 清晨的山间薄雾给风景增添了几分朦胧美&#xff0c;但对于计算机视觉系统而言&#xff0c;这种大气散射效应却是清晰感知世界的障碍。从自动驾驶车辆的环境感知到卫星…...

Linux开发实战:Shell脚本与构建系统进阶指南

1. Linux开发者工具箱&#xff1a;从基础到进阶的实用指南作为一名在Linux环境下摸爬滚打多年的开发者&#xff0c;我深知高效工具链对生产力提升的重要性。这个系列文章最初只是我个人工作笔记的整理&#xff0c;后来逐渐发展成覆盖Linux开发全流程的实用指南。不同于教科书式…...