web狗之xxm实体攻击

web狗之xml实体攻击浅学

我们先来了解一下xml


<?xml version="1.0" encoding="utf-8"?>
<note>
<to>chybeta</to>
<from>ph0en1x</from>
</note>
在上面代码中的第一行,定义XML的版本与编码。

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

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

我们再了解一下实体:

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

文档类型定义:DTD

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

其基本格式:

<!DOCTYPE 根元素名 [ 元素描述 ]>

内部引入
格式:

<!ENTITY 实体名称 "实体的值">

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xxe [
<!ENTITY chybeta "Hello World!">
]>
<xxe>
&chybeta;
</xxe>
 

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

外部引入
基本格式:


<!ENTITY 实体名称 SYSTEM "URI">
 

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值