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”之一,彻底杜绝了文件包含漏洞。
相关文章:
![](https://img-blog.csdnimg.cn/75a0850b74874fcf9fa93e455823aae6.png#pic_center)
4、DVWA——文件包含
文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(i…...
![](https://www.ngui.cc/images/no-images.jpg)
产品经理如何进行需求管理
产品经理在进行需求管理时,可以遵循以下步骤: 1. 确定需求目标:明确产品的愿景和目标,确定需求管理的方向和重点。 2. 收集需求:与利益相关者(包括用户、业务部门、技术团队等)沟通,…...
![](https://img-blog.csdnimg.cn/830f40d884774d34bdbb472ba2e8942e.gif#pic_center)
【从0学习Solidity】2. 值类型详解
Solidity极简入门: 2. 值类型 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发…...
![](https://img-blog.csdnimg.cn/f6e73b833d97483a9b211b93b5c428bb.png)
框架分析(9)-Hibernate
框架分析(9)-Hibernate 专栏介绍Hibernate特性对象关系映射(ORM)数据库连接和事务管理查询语言(HQL)缓存机制透明的持久化操作对象的延迟加载事务管理 优缺点优点简化数据库操作跨数据库平台高度可定制性缓…...
![](https://img-blog.csdnimg.cn/49003d19702f43c9a233b53cf361faf0.png)
JavaScript中的原型链(prototype chain)
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的原型链⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏…...
![](https://img-blog.csdnimg.cn/a310a367d30644339d10c938e3f3bcd7.png)
设计模式之代理模式与外观模式
目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为…...
![](https://img-blog.csdnimg.cn/224ece6fbf6c4f8985bb3d7c0ddcb596.png)
动手学深度学习(四)多层感知机
目录 一、多层感知机的从零开始实现 1.1 初始化模型参数 1.2 实现Relu函数 1.3 实现模型 1.4 训练 二、多层感知机的简洁实现 2.1 实现模型 2.2 训练 三、模型选择 3.1 训练误差和泛化误差 3.2 验证数据集和测试数据集 3.3 过拟合和欠拟合 3.4 代码实现 3.4.1 生…...
![](https://img-blog.csdnimg.cn/img_convert/de66edae4e68d933462ffaebe9ed18dc.png)
融云出海:社交泛娱乐出海,「从 0 到 1」最全攻略
9 月 21 日,融云直播课社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频社交应用? 欢迎点击上方小程序报名~ 本期我们翻到《地图》的实践篇,从赛道/品类选择、目标地区适配、用户增长、变现模式、本地化运营、跨国团队管理等方面完整描绘…...
![](https://img-blog.csdnimg.cn/2e0c84cdb7334a0794455531513c61d2.webp)
生成式人工智能促使社会转变
作者:JEFF VESTAL 了解 Elastic 如何处于大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中,帮助用户将 LLM 提升到新的高度。 iPhone 社会转变:新时代的黎明 曾几何时,不久前…...
![](https://img-blog.csdnimg.cn/34e46aefe577414c98ef10b62635557a.png)
【STM32】SPI初步使用 读写FLASH W25Q64
硬件连接 (1) SS( Slave Select):从设备选择信号线,常称为片选信号线,每个从设备都有独立的这一条 NSS 信号线,当主机要选择从设备时,把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即…...
![](https://www.ngui.cc/images/no-images.jpg)
javaScript:DOM(父子/兄弟)常用属性
目录 前言 一.父子关系 父子关系的常用属性 childNodes 获取所有的子节点 children 获取所有的子元素(dom元素) firstChild 获取元素的第一个子节点,相当于 childNodes[0] firstElementChild 获取元素的第一个元素 相当于 children[0]…...
![](https://www.ngui.cc/images/no-images.jpg)
笔记:linux中LED(GPIO)驱动设备树配置和用法
设备树中节点配置 设备树中的LED驱动一般是这样写,LED驱动可以控制GPIO的电平变化,生成文件节点很方便 leds: leds {compatible "gpio-leds";gpio_demo: gpio_demo {label "gpio_demo";gpios <&gpio0 RK_PC0 GPIO_ACTIV…...
![](https://img-blog.csdnimg.cn/6e2be4be07e94dee928a611767e26b9e.png)
能耗管理+分区温控成为开发节能、省电神器的关键!从此告别电费刺客时代
取暖器在人们脑海中最深刻的印象,就是费电!而它耗电量大的原因,主要在于它是靠电能直接转化为热能:在取暖设备通电后,内部高电阻的电热丝发热,风机会将这股热量吹散到室内,从而达到全屋取暖的效…...
![](https://img-blog.csdnimg.cn/bf2aef1314fc41ea81ac8f44f18758a8.png#pic_center)
垃圾回收 - 复制算法
GC复制算法是Marvin L.Minsky在1963年研究出来的算法。说简单点,就是只把某个空间的活动对象复制到其它空间,把原空间里的所有对象都回收掉。这是一个大胆的想法。在此,我们将复制活动对象的原空间称为From空间,将粘贴活动对象的新…...
![](https://www.ngui.cc/images/no-images.jpg)
基于SpringMVC实现常见功能
基于SpringMVC实现常见功能 防止XSS攻击 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到…...
![](https://img-blog.csdnimg.cn/fe7e43b5053e4c718fde14c6a581c4d6.png)
MetInfo5.0文件包含漏洞
MetInfo历史版本与文件 环境在这里下载,使用phpstudy搭建 我们来看到这个index.php,如下图所示,其中定义了fmodule变量与module变量,其中require_once语句表示将某个文件引入当前文件,在这个代码中,通过r…...
![](https://www.ngui.cc/images/no-images.jpg)
【SpringBoot】SpringBoot实现基本的区块链的步骤与代码
以下是Spring Boot实现基本的区块链代码的步骤: 创建一个Block类,它表示一个区块,包含一个区块头和一个区块体。区块头包括版本号、时间戳、前一个区块的哈希值和当前区块的哈希值。区块体包含交易数据。 创建一个Blockchain类,它…...
![](https://img-blog.csdnimg.cn/b649ad0d9fde4ffe8bc618e3b57cbbaf.png)
Photoscan/Metashape 2.0.0中的地面激光扫描处理
在Metashape(原Photoscan)2.0.0, 结构化地面激光扫描和非结构化航空激光扫描都可以使用导入点云(文件>导入>导入点云)命令导入。导入时会保留所有点属性(包括结构化信息)。 本文讨论以下主题 如何将激光扫描数据导入项目&am…...
![](https://img-blog.csdnimg.cn/5086f6f271d84ae48e7de5c570db08b7.png)
git快速使用
1、下载git 设置签名 2、基本概念 工作区:写代码的地方。 暂存区:.git的.index 工作区:.git 3、常用操作 本地codinggit init, 初始化一个本地仓库,项目根目录下会出现个.gitgit remote add origin gitgithub.com…...
![](https://www.ngui.cc/images/no-images.jpg)
java 实现代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,它允许一个对象(代理对象)充当另一个对象(被代理对象)的接口,以控制对该对象的访问。代理模式通常用于以下情况: 远程代理…...
![](https://www.ngui.cc/images/no-images.jpg)
【每日一题】力扣1768. 交替合并字符串
题目以及链接: 1768. 交替合并字符串 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1&…...
![](https://img-blog.csdnimg.cn/fa50b9fda60f4c3b88a2d3fe0fd3b8ab.png)
vscode新建vue3文件模板
输入快捷新建的名字 enter 确认后在文件中输入以下内容 {// Place your snippets for vue here. Each snippet is defined under a snippet name and has a prefix, body and// description. The prefix is what is used to trigger the snippet and the body will be expand…...
![](https://www.ngui.cc/images/no-images.jpg)
MySql学习笔记02——MySql的简单介绍
MySQL 常用命令 注意在mysql中使用的命令需要用英文分号结尾(启动/关闭mysql服务不需要带分号) net start mysql 启动mysql服务(需要管理员启动cmd) net stop mysql关闭mysql服务(需要管理员启动cmd) m…...
![](https://img-blog.csdnimg.cn/1c6c84343f48418382ad701ac14db593.png)
mysql-1:认识mysql
文章目录 数据库概述什么是数据库什么是关系型数据库 MySQL的概述MySQL是什么MySQL发展历程 SQL的概述什么是SQLSQL发展的简要历史:SQL语言分类 数据库概述 什么是数据库 数据库就是[存储数据的仓库],其本质是一个[文件系统],数据按照特定的…...
![](https://www.ngui.cc/images/no-images.jpg)
算法通关村-----堆在查找和排序中的应用
数组中的第K个最大元素 问题描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。详见le…...
![](https://www.ngui.cc/images/no-images.jpg)
直方图统计增强方法
直方图统计增强方法的原理: 直方图统计增强是一种基于像素值分布的图像增强技术,通过调整像素值的分布来增强图像的对比度和细节。其原理是根据图像的直方图信息,将原始像素值映射到一个新的像素值域,从而改变图像的亮度和对比…...
![](https://img-blog.csdnimg.cn/8ec3780465cd4bdc82f169e620028643.gif#pic_center)
字节二面:如果高性能渲染十万条数据?
前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,作为一名前端开发工程师,我们虽然可能很少会遇到后端返回十万条数据的情况,但是了解掌握如何处理这种情况,能让你对前端性能优化有更深的…...
![](https://img-blog.csdnimg.cn/2c1d8c10763046f4833bafb6318bb688.png)
Mysql高阶语句(二)
一、设置别名(alias ——>as) 在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了࿰…...
![](https://img-blog.csdnimg.cn/7e588b508bc94270bdd0d6450059d413.png)
算法笔记 二叉搜索树
二叉搜索树(Binary Search Tree,简称 BST)是一种数据结构,用于存储具有可比较键(通常是数字或字符串)的元素 1 结构特点 节点结构:每个节点都有一个键和两个子节点(左子节点和右子…...
![](https://www.ngui.cc/images/no-images.jpg)
微软牵手Linux:Ubuntu“系统”上架win10应用商店啦
导读继SUSE Linux登陆之后,Ubuntu今天正式以UWP应用的身份上架Win10应用商店。Windows Insider用户升级到Win10秋季创意者更新预览版Build 16190及以上就可以下载和安装Ubuntu系统应用。一旦下载和安装完Ubuntu应用后,它将开始在你的Windows10 PC上安装U…...
![](/images/no-images.jpg)
免费云主机试用一年/上海网站营销seo方案
ing我们知道很多时候加在动词后面是表示进行时,但很多动词加ing也可以变成一个形容词或名词. 同样ed一般表过去式,但也能做形容词 ing后缀常用词 including 包含 according 相符的 依照 meeting 会议 training 训练 feeling 感觉 painting 绘画 interesting 有趣的 beg…...
![](/images/no-images.jpg)
网站建设的开多少税率/seo优化培训课程
问题: 给定一个栈,逆置栈中的内容,要求只能只用栈操作push和pop,不能用数组、栈、队列等做过渡。 基本思路: 用递归,先将原来栈中的元素递归出栈,直至栈为空,然后在每次递归向上步…...
![](https://img-blog.csdnimg.cn/img_convert/afab614482425deebec70c1e041eda55.png)
做网站公司商丘/网络营销策划方案书范文
日前,网安专业媒体安全牛【牛人访谈】栏目专访了知道创宇CSO黑哥(周景平)。 围绕知道创宇出版的新书《网络空间测绘技术与实践》,安全牛分析师与黑哥就网络空间测绘技术当下的应用与挑战、未来的发展与创新进行了对话与交流。 以…...
![](http://programmerdigest.cn/wp-content/uploads/2009/12/c_socket.jpg)
成都市建设工程质量协会网站/互联网金融
在当今的网络时代,我们常常见到的进程间通信方式都是socket,比如Java的EJB调用,Java和C通信,Web Service服务等。socket是最常用的通讯技术,几乎所有的系统、语言都支持,socket也是面向网络的,通…...
![](https://img-blog.csdnimg.cn/img_convert/31906e86a9ec80bc2a6f21978711c3e2.png)
网易企业邮箱登录入口登录入口/seo是什么职位缩写
引言在可观察性领域,Metrics,Tracing 和 Logging 的介绍由来已久。三种之间的边界越来越模糊。OpenTracing 中已经支持 LogEvent,OpenTelemetry 已经把 OpenMetric 和 OpenTracing 整合到一块。今天我们要介绍的链路追踪的业务分析功能&#…...
![](/images/no-images.jpg)
nginx wordpress 配置/百度搜索app下载
手把手制作一个IDEA插件(Demo搭建篇) - 掘金...