作者:手机用户2502856203 | 来源:互联网 | 2023-07-30 16:49
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据(而不是储存数据),可扩展标记语言是一种很像超文本标记语言
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据(而不是储存数据),可扩展标记语言是一种很像超文本标记语言的标记语言。它的设计宗旨是传输数据,而不是显示数据。它的标签没有被预定义。您需要自行定义标签。它被设计为具有自我描述性。它是W3C的推荐标准。
可扩展标记语言(XML)和超文本标记语言(HTML)为不同的目的而设计;XML目的是传输数据,主要体现在数据的内容,而HTML目的是显示数据,体现在数据的外观。
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素
![技术图片](https://img8.php1.cn/3cdc5/16086/978/4e9a090b17e9aaaa.jpeg)
文档类型定义DTD可以在XML文档内声明也可以外部引用。
内部声明DTD
引用外部DTD
或者
DTD的实体
DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。
我们可以在内部确定其值(内部子集):
![技术图片](https://img8.php1.cn/3cdc5/16086/978/260fb5871f461050.jpeg)
或从外部来源:(外部子集):
![技术图片](https://img8.php1.cn/3cdc5/16086/978/40976af046dcf1f3.jpeg)
或
或者
SYSTEM标识符意味着该实体从外部来源获取内容。
如果要引用一个外部资源,可以借助各种协议 几个例子:
file:///path/to/file.ext
http://url/file.ext
php://filter/read=convert.base64-encode/resource=conf.php
外部实体的类型:
![技术图片](https://img8.php1.cn/3cdc5/16086/978/c38d9df3d759b3f0.jpeg)
XML 中的实体分为以下五种:字符实体,命名实体,外部实体,参数实体,内部实体,普通实体和参数实体都分为内部实体和外部实体两种,外部实体定义需要加上 SYSTEM关键字,其内容是URL所指向的外部文件实际的内容。如果不加SYSTEM关键字,则为内部实体,表示实体指代内容为字符串。
XML注入
XML External Entity,XML外部实体注入。
通过 XML 实体,”SYSTEM”关键词导致 XML 解析器可以从本地文件或者远程 URI 中读取数据。所以攻击者可以通过 XML 实体传递自己构造的恶意值,是处理程序解析它。当引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。XML定义了两种类型的ENTITY,一种在XML文档中使用。
]>
定义好的ENTITY在文档中通过“&实体名;”来使用。举例:
]>
Ajax
$5.95
Foundations of Ajax.
&publisher; 这里的&publisher;会被“ABC company”替换
Ajax Patterns
$7.95
Introduction of Ajax Patterns.
&publisher; 这里的&publisher;会被“ABC company”替换
...未完待续
简单漏洞利用:https://bbs.ichunqiu.com/thread-44650-1-7.html
学习自https://www.cnblogs.com/backlion/p/9302528.html
注入XML解释器