xxe漏洞学习

一、什么是xxe漏洞

XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击的目的攻击者可以通过构造恶意内容,就可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等危害。

由此为引例,了解一下XML语言

XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储, 结构是树形结构,有标签构成,这点很像HTML语言。

但是XML和HTML有明显区别如下:   

XML 被设计用来传输和存储数据。 

HTML 被设计用来显示数据。

先来看一段简单的XML代码



<?xml version=’1.0’?>					//声明XML解析器版本来解析
<person>								//根元素,不一定是person
<name>test</name>						//子元素,意思就是name变量的值是test
<age>20</age>                           //同理
</person>


简单来说XML的语法中,标签就是变量名,标签里面的数据就是变量的值 

而实体又分为三种,一般实体(通用实体),参数实体,预定义实体 (XXE不用,我也没了解)

1、一般实体


<?xml version=’1.0’?>	   // 声明XML解析器版本来解析 
 
// 运用实体定义变量的写法 
// 即声明一个name变量,值为john
<!DOCTYPE person[         
<!ENTITY name “john”>      
]>				
 
// 引用一般实体的写法,格式为"&实体名称;"
<person>			      
<name>&name;</name>		   		
<age>20</age>
</person>

2、参数实体

参数实体的声明:<!ENTITY % 实体名称  "实体内容">

引用参数实体的方法:%实体名称;

 来看看下面一段使用了参数实体的代码,其实跟一般实体差不多只是%的区别

=

<?xml version=’1.0’?>       // 声明XML解析器版本来解析 
 
// 运用参数实体定义变量的写法 
// 即声明一个outer变量,值为John
<!DOCTYPE person[         
<!ENTITY % outer "John">        
%outer;                     //参数实体定义的变量必须先在dtd文件中引用
]>             
 
 
// 引用参数实体的写法,格式为"%实体名称;"
<person>                  
<name>%name;</name>                   
<age>20</age>
</person>

它必须定义在单独的DTD区域,这种实体相对灵活,这种功能在漏洞利用场景的外部实体注入(XXE)过程中非常有用

然后再区分一下内部实体和外部实体

内部实体


<?xml version=”1.0”?>
<!DOCTYPE note[
<!ELEMENT note (name)>
<!ENTITY hack3r “hu3sky”>
]>
<note>
<name>&hack3r;</name>
</note>

 外部实体

<?xml version=”1.0”?>
<!DOCTYPE a[
<!ENTITY  name SYSTEM “http://xx.com/aa.dtd”>
]>
<a>
<name>&name;</name>
</a>

内部实体就相当于自己编写DTD内容,而外部实体就相当于引入外部的DTD内容,类似于写JS代码时从外部引入JS文件,上面的一般实体和参数实体都可以化为外部实体 

 二、实战检验

这一部分放到暑假再练习吧,主要是有点抽象,需要时间去理解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java图形用户界面设计的布局管理器

LayoutManager布局管理器 前言一、布局管理器的背景简介 二、FlowLayout构造方法参数说明代码演示AWTSwing 三、BorderLayout布局管理器注意点构造方法代码演示AWT示例一示例二 Swing 四、GridLayout简介构造方法代码示例AWTSwing 五、GridBagLayoutGridBagConstraints APIGrid…

时间同步概念及常见的时间同步协议NTP PTP

一、前言 前面几篇文章介绍了Linux中的各种各样的时间、时钟源以及时间维护的方式&#xff0c;其中在timekeeper等数据结构中&#xff0c;我们当时略过了NTP相关的字段&#xff0c;为了补充这一段内容&#xff0c;从本篇开始会介绍时间同步的基本概念、及常见的时间同步协议&am…

0617_QT3

练习&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//去掉头部this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白部分this->setA…

YOLOv10项目-服务器上运行

1、前言 2、运行YOLOv10代码流程&#xff08;超详细&#xff09; &#xff08;3&#xff09;根据下面步骤安装&#xff1a; &#xff08;4&#xff09;数据集和其他配置 &#xff08;5&#xff09;测试训练&#xff08;很详细&#xff09; 1、前言 由于一些事情&#xff0…

java文件传输小工具 java17+springboot3+thymeleaf

背景 在和同事工作中经常需要传输文件&#xff0c;但是公网传输太慢&#xff0c;业务方不是计算机专业直接用命令行沟通麻烦。 本小工具通过页面可视化方便用户使用&#xff0c;端口9090&#xff0c;启动默认展示当前登陆本机用户的桌面。 代码开源&#xff1a; https://git…

制作翻页电子版画册攻略:轻松掌握数字创作技巧

​随着科技的飞速发展&#xff0c;数字创作已经成为了一种流行的创作方式。如今&#xff0c;越来越多的人选择将纸质画册转化为翻页电子版画册&#xff0c;以便更好地展示和传播自己的作品。你也想掌握这项技能&#xff0c;但却苦于不知从何入手&#xff1f;接下来教你制作翻页…

Redis-数据结构-跳表详解

Redis概述 Redis-数据结构-跳表详解 跳表&#xff08;Skip List&#xff09;是一种基于并联的链表结构&#xff0c;用于在有序元素序列中快速查找元素的数据结构。 Redis 中广泛使用跳表来实现有序集合&#xff08;Sorted Set&#xff09;这一数据结构。 1.跳表的基本概念和…

怎么做成的文件二维码?扫阅览文件的制作方法

现在用二维码来分享或者查看文件是一种很常用的方式&#xff0c;比如常见的文件内容有简历、资料、作品、压缩包等等。通过将文件生成二维码能够在提升文件传输速度的同时还有利于用户体验的提升&#xff0c;那么如何制作可以长期提供文件预览或者下载的二维码呢&#xff1f; …

python之Bible快速检索器

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! python之Bible快速检索器 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01; 助力快…

Python基础用法 之 转义字符

将两个字符进⾏转义 表示⼀个特殊的字符 \n ---> 换⾏&#xff0c;回⻋ \t ---> 制表符, tab键 注意&#xff1a; print( end\n)&#xff1a; print() 函数中默认有⼀个 end\n, 所以,每个 print 结束之后, 都会输出⼀ 个换行。 未完待续。

大腾智能正式入驻华为云

5月30日&#xff0c;大腾智能正式入驻华为云云商店。作为一家基于云原生的国产工业软件与数字化协同平台&#xff0c;大腾智能专注于推动企业数字化转型与升级&#xff0c;为企业提供一系列专业、高效的云原生数字化软件及方案。 华为云云商店&#xff0c;作为业界标杆&#xf…

眼动研究实验设计方法

摘要 本文对基于实验室的眼动实验设计进行了总体回顾&#xff0c;并侧重于回顾实验程序和方法&#xff0c;从而为眼动追踪实验提供一个框架或背景。本文内容涵盖了基本的实验设计&#xff0c;这与实验心理学课本没有太大的区别&#xff0c;其中析因设计在眼动追踪研究中特别受…

MinIO安装、与SpringBoot整合、常见方法

系统学习&#xff1a;若依框架&#xff08;整合了MinIO&#xff09;介绍 | RuoYi MinIO MinIO是一个高性能的对象存储系统&#xff0c;专为大规模数据存储、管理和访问而设计。以下是关于MinIO的详细解析&#xff1a; 1. 基本概念 定义&#xff1a;MinIO是一个基于Amazon S3…

DY-34/60C电压继电器 带板前底座 约瑟JOSEF

系列型号&#xff1a; DY-32电压继电器&#xff1b;DY-36电压继电器&#xff1b; DY-33电压继电器&#xff1b;DY-37电压继电器&#xff1b; DY-34电压继电器&#xff1b;DY-38电压继电器&#xff1b; DY-31电压继电器&#xff1b;DY-35电压继电器&#xff1b; DY-32/60C电…

定时器介绍之8253芯片

目录 定时器简介 8253功能介绍 组成 工作原理 相关引脚 启动方法 计数方式 实现 读取计数值 定时器简介 8253功能介绍 内部结构 相关引脚 计数器组成 工作原理 启动方法 计数方式 初始化&#xff1a;写入控制字——>写入计数初值 实现 计数长度选择&#xff1a…

1832javaERP管理系统之实践教学管理Myeclipse开发mysql数据库servlet结构java编程计算机网页项目

一、源码特点 java erp管理系统之实践教学管理是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了servlet设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…

7.无代码爬虫八爪鱼采集器软件——采集规则/项目的创建与网址输入

接上篇 6.零代码网页爬虫软件基础实操——下载与安装八爪鱼采集器 八爪鱼免费爬虫软件下载&#xff1a; 八爪鱼采集器下载 小白数据采集神器​​https://affiliate.bazhuayu.com/retrieve 直接复制粘贴要采集的网站在这里就可以进入采集规则的设计器 自定义任务 通过这个功能…

hipcc 编译 amd gpu kernel 和 打包与解包的流程实验

1, hip cuda kernel 编译概观 编译的文件流&#xff1a; .hip kernel --(clang)--> .o .o --(lld)--> .out .out --(clang-offload-bundler)--> .hipfb 2&#xff0c;示例 hipcc -#…

Ubuntu20.04中复现FoundationPose

Ubuntu20.04中复现FoundationPose 文章目录 Ubuntu20.04中复现FoundationPose1.安装cuda和cudnn2.下载相关资源3.环境配置4.运行model-based demo5.运行ycbv demoReference &#x1f680; 非常重要的环境配置 &#x1f680; ubuntu 20.04cuda 11.8.0cudnn v8.9.7python 3.9.19…

windows如何查看硬盘类型(查看磁盘类型)(查看是固态硬盘ssd还是机械硬盘hdd)(Windows优化驱动器——媒体类型)

文章目录 方法&#xff1a;使用Windows优化驱动器1、在任务栏搜索框中输入“优化驱动器”并打开它。2、在优化驱动器的窗口中&#xff0c;查看每个驱动器旁边的“媒体类型”。3、如果列出的是“固态驱动器”&#xff0c;那么它是SSD&#xff1b;如果是“硬盘驱动器”&#xff0…