码迷,mamicode.com
首页 > 其他好文 > 详细

XXE注入学习

时间:2020-06-12 14:31:10      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:其他   工作   相关   doctype   dtd   type   基于   指定   特殊符号   

那天看了一个视频觉得讲的很好,但是看了两遍都只有一个大概的印象,对于其中的细节什么的还是不怎么能描述出来,所以将视频中的内容记录下来,方便细细琢磨

视频链接:https://www.bilibili.com/video/BV1at41177SA

一、xml介绍

XML(可扩展标记语言)与HTML类似,但HTML与数据表示有关,而XML更多与数据传输、存储有关。

先来看看xml文档格式:

<?xml version="1.0"?>  //元数据,版本为xml解析器解析的版本
<Person>
<Name>John</Name>
<Age>20</Age>
</Person>

<Person></Person>为根元素,有且仅有一个

需要注意的是,标签对大小写敏感,前后标签必须一致,如<read></Read>则是错误的,必须<read></read>

 

< ,> ," ,‘ , &等符号不被允许直接出现在XML文档中,因为xml解析器会搞不清这些符号是数据还是标签

<Age>20 < > & " ‘</Age>   ×

 

那么这个时候就需要Entity来解决这个问题 ↓ 

 

二、Entity实体介绍

Entity(可用实体):一种简单的存储单元,好比xml的变量,可以对它进行赋值,并在xml文档的不同地方对它进行引用。

实体(Entity)在xml文档中的文档类型定义部分(DTD)被单独定义描述。

 

举个栗子:

1 <?xml version="1.0" ?>
2 <!DOCTYPE Person [
3     <! ENTITY name "John">   //定义了一个存储单元,这个简单Entity名称就为name
4 ]>
5 <Person>
6     <Name>&name;</Name>  
7     <Age>20</Age>
8 </Person>

2~4行代码就是通过DTD方式创建了一个ENTITY告知xml解析器这是一个DTD定义类型

 

Entity分为三类

①一般实体General(通用型实体)

<?xml name "pwn"?>
...
<hello>&pwn;</hello>

②参数实体Parameter(必须预定在单独的DTD区域)

<!ENTITY %outer "<! ENTITY inner ‘J‘>">

③预定义实体Predefined(某些特殊符号的一组预定义数值集)

<hello>&#x3c;</hello>  // <的十六进制表示

 

三、外部实体(Xml External Entity)

实体(Entity)有哪些用途呢?

存储指定数值;从本地文件、从远程网络中调用相关数据,作为后续实体引用

 

那么这就会出现问题

 

我们先来看看外部实体的一个实例,来帮助我们了解其工作机制

<?xml version="1.0" ?>
<!DOCTYPE XXE[
    <! ENTITY subscribe SYSTEM "secret.txt">
]>
<pwn>&subscribe;</pwn>

SYSTEM 关键字让xml解析器知道该实体是一个外部实体,需要xml解析器去获取  “ secret.txt ”  其中的外部资源,并把它存储到内部实体 subscribe 中

<pwn>&subscribe;</pwn> 内部实体在后续<pwn>标签中会被调用

secret.txt其中的内容才是内部实体subscibe的赋值

 

STSYEM  “URI”   这里支持有效的URI(文件、http、ftp和其他协议形式内容)

 

四、外部实体注入 (XXE)

分类:

带内数据 in-band  (就是我们上面举的外部实体的那个栗子)

基于错误 error-based

带外数据 out-of-band

 

待更新。。。。

 

XXE注入学习

标签:其他   工作   相关   doctype   dtd   type   基于   指定   特殊符号   

原文地址:https://www.cnblogs.com/xiaoxiaosen/p/13093985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!