web狗之xxm实体攻击

web狗之xml实体攻击浅学

我们先来了解一下xml




chybeta
ph0en1x

在上面代码中的第一行,定义XML的版本与编码。

在XML文档中,所有的元素都必须正确的嵌套,形成树形结构。并且整个XML文档中必须要有一个根元素。如上代码,是整个文档的根元素。嵌套在note标签中的则是根的子元素。

同时,所有的XML元素都必须有关闭标签,这点不像html语法那样松散。如果缺失关闭标签,则会导致XML解析失败。

我们再了解一下实体:

所有的XML文档都由五种简单的构建模块(元素,属性,实体,PCDATA CDATA)构成。这里着重介绍一下实体:实体是用于定义引用普通文本或特殊字符的快捷方式的变量,实体引用是对实体的引用。实体可在内部或外部进行声明。因此我们利用引入实体,构造恶意内容,从而达到攻击的目的。
实体类型:
XML实体分为四种:字符实体,命名实体,外部实体,参数实体。

文档类型定义:DTD

简单的说,DTD的作用是定义XML文档的合法构建模块。如前所述,实体也是构建模块之一。因此可以利用DTD来内部或外部引入实体。

其基本格式:


内部引入
格式:

将DTD和XML放在同一份文档中,利用DTD定义的实体即为内部实体。
例如:



]>

&chybeta;

 

访问该XML文档,&chybeta;会被解析为Hello World!并输出。

外部引入
基本格式:



 

通过引用定义在外部的DTD中的实体,我们称之为外部实体。

之后呢,我们通过jarvis上的一道web题来尝试一下:
http://web.jarvisoj.com:9882/
我们先进行一下抓包
web狗之xxm实体攻击_第1张图片
之后呢我们发现第一个红箭头的位置,使用的是json方式传入
我们改为xml,之后编写代码进行传入
web狗之xxm实体攻击_第2张图片
go后我们得到flag
web狗之xxm实体攻击_第3张图片
小白,还请多多关照

你可能感兴趣的:(web狗之xxm实体攻击)