Pikachu之XXE(xml外部实体注入漏洞)

一、XML简介

1.XML

指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。

2.一个 XML 文档实例

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言)。
下一行描述文档的根元素(像在说:"本文档是一个便签"):
     <note>
接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body>
最后一行定义根元素的结尾:
</note>
从这个实例中,XML 文档包含了一张 Jani 写给 Tove 的便签。

二、XEE实验

1.进入xee页面

在这里插入图片描述
在这里插入图片描述

2.查看其源代码

通过POST请求,去获取前端的下xml数据,获取后就会传到simplexml_load_string()这个函数,如果PHP的版本大于2.9.0的话,这个函数是默认禁止的,但在这里,他为了制造一个漏洞,就通过LIBXML_NOENT这个函数开启了外部实体来构造XXE漏洞。也就是说,在这个漏洞中,把xml数据传给simplexml_load_string(),这个函数就会对数据的外部实体内容进行解析,然后再返回给前端。

3.对其代理,burp抓包

在这里插入图片描述

4.发现提交的数据使用了xml格式,初步判断存在漏洞

当在输入
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY hacker "XXE!!!">
]>
<name>&hacker;</name>
时,发现可以注入

在这里插入图片描述

5.构造一个payload,通过外部实体获取后台数据库的本地信息

先在本机g硬盘创建一个kokokoko的111.txt文件,再编写一个payload
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ANY [
 <!ENTITY xxe SYSTEM "file:///g://111.txt" >]>        
<value>&xxe;</value>

将payload输入对话框,得到如下:

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值