今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE漏洞详解(二)——DTD基础。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、DTD简介和用法
DTD,即Document Type Definition,文档类型定义的简称,是一种精确描述XML语言的方式。DTD根据XML语言的语法规则检查XML文档结构的词汇和有效性。DTD主要用于保证XML文档格式正确,我们可以通过比较XML文档和DTD文件来看文档是否合乎规范,元素和标签使用是否正确。
我们可以在XML文档中指定DTD,即内部DTD。也可以将DTD保存在单独的文档中,然后单独添加,这样即外部DTD。
二、内部DTD使用
内部DTD指的是直接在XML文档中声明元素,这时需要在XML的头部声明中添加属性standalone,并将该属性的值设置为"yes"。
内部DTD使用语法如下所示:
<!DOCTYPE root-element
[
element-declarations
]>
1
2
3
4
一个内部DTD格式如下所示:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!DOCTYPE person [
<!ELEMENT person (name,age,address,country,major)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT major (#PCDATA)>
]>
Bob
24
1-1-110
China
History
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
其中
<!ELEMENT person (name,age,address,country,major)>
1
定义了person根节点下面存在name、age等属性。
而
<!ELEMENT name (#PCDATA)>
1
则定义了name属性的类型是(#PCDATA)。
三、外部DTD使用
外部DTD元素定义在XML文档之外,可以是合法的.dtd文件,也可以是有效的URL。如果要引用外部DTD,那么在XML的头部声明中,需要设置standalone属性为"no"。
外部DTD声明语法为:
<!ENTITY element SYSTEM "xxx.dtd|http://…………">
1
例如:
<!ENTITY element1 SYSTEM "filename.dtd">
<!ENTITY element2 SYSTEM "http://www.exp.com/exp.dtd">
1
2
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/128412513