XXE
文章目录
0x01 前置知识汇总
XML
可扩展标记语言(eXtensible Markup Language)
区分XML和HTML:
XML用于传输和存储数据,聚焦与数据的内容
HTML用于显示数据,聚焦于数据的外观
XML用途:
- 数据分离
将HTML中的数据分离,当动态修改数据时可以将独立存储在XML文件中的数据读取调用,避免对HTML进行任何改变,只需要利用JavaScript代码读取外部XML文件
XML语法:
- 树形结构 必须具有根元素
<root> <child> <subchild>.....</subchild> </child> </root>
举例:
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
- 声明 :
<?xml version="1.0" encoding="utf-8"?>
- 标签中大小写敏感
- 属性值必须加引号
- 实体引用
一些字符拥有特殊含义 所以使用实体引用代替特殊字符
<message>if salary < 1000 then</message> <!--上面的<是特殊字符 在解析器中会把他当做新元素的开始 修改如下--> <message>if salary < 1000 then</message>
DTD (Document Type Definition)
作用:
在XML文档中加入DTD声明可以告诉XML解析器该文档遵循哪个DTD文档类型,对文档进行验证,以确保文档正确性。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rootElement SYSTEM "example.dtd">
<rootElement>
<childElement>Hello World!</childElement>
</rootElement>
限制:
<!ELEMENT:
0x02 XXE
什么是XXE :构造恶意DTD 主要是利用实体引用
实体引用介绍:
一、通用实体
- 内部实体(无SYSTEM 不需要引用外部文件)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [