XXE FINAL
Preparation XXE:XML External Entity Injection, XML外部实体注入 <?xml version="1.0"? encoding="utf-8"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> encoding xml可以采取不同编码,定义在encoding中,对于绕过一些bypass有帮助 对于java应用可以使用utf-32be绕过!DOCTYPE过滤 其实这一行不写很多也认得出来是什么编码 DTD(Document Type Definition, 文档类型定义) 包含在<!DOCTYPE ... >中 一般实体与元素 元素 <!ELEMENT 元素名称 类别> <!ELEMENT 元素名称 (元素内容)> 元素用于声明xml元素,了解即可,可以引用实体 实体 <!ENTITY 实体名称 "实体的值"> <!ENTITY 实体名称 SYSTEM "URI/URL"> 实体可以被引用&实体名称; !! 实体不是什么抽象的概念,比如内建实体<是<,做过前端开发应该都见过,只是现在这里允许自定义实体 参数实体 上文介绍的是一般实体,现在对比介绍参数实体 <!DOCTYPE note [ <!ENTITY % abc "233"> <!ENTITY bcs "344"> ]> <user>&bcs</user> 上面的定义中,出现了两种实体,分别是一般实体和参数实体,参数实体的定义和一般实体比一般实体的定义多了一个百分号% 参数实体一般作为声名实体的参数存在,仅仅在DTD区使用 参数实体的引用需要使用百分号%,例如%abc;...