Jarvis OJ API调用

XXE任意文件读取

一、知识点

1.XML(可扩展标记语言)

XML叫可扩展标记语言,是一种很像HTML的标记语言。但XML 的设计宗旨是传输数据,而不是显示数据。我理解的是一直传输数据的格式,把要传输的数据放在一个个自己定义的标签里,至于为什么要用这种格式传输,我就不知道了。

也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。

下面实例是 Jani 写给 Tove 的便签,存储为 XML:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don’t forget me this weekend!</body>
</note>

上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。

但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。建议去稍微学一下XML再来看这到题。

2.DTD(文档类型定义)

作用是定义 XML 文档的合法构建模块。也就是那些<from>,<to>之类的,可以现在DTD中进行声明,规定这些标签的属性,这样在下面使用这些标签时,就不要再定义这些属性了。
但我们还这一在这里定义另外的一种东西,叫实体。和HTML中的,字符实体类似,也是一些符号可以由&xxx;代替.比如在HTML中<由&lt;来代替了,只不过在DTD中,谁代替谁,是由你自己定义的。

内部实体声明:

DTD 实例:

<!ENTITY writer "Donald Duck."> <!ENTITY copyright "Copyright runoob.com">

XML 实例:

<author>&writer;&copyright;</author>

外部实体声明

DTD 实例:

<!ENTITY writer SYSTEM "http://www.runoob.com/entities.dtd"> <!ENTITY copyright SYSTEM "http://www.runoob.com/entities.dtd">

XML example:

&writer;&copyright;

二、实战

Jarvis OJ API调用