Java反序列化:CC4利用链深度解析
前言针对common-collections4,ysoserial也是给出了两条反序列化调用链,一个是我们前文分析的CC2,另一个就是本文分析的CC4。 环境搭建 jdk 8u71 commons-collections-4.0 CC4分析其实CC4链就是将CC2链中的InvokerTransformer调用TemplatesImpl.newTransformer()方法换成了InstantiateTransformer来加载字节码,具体原理可以看我之前CC3链分析。 大致就是TrAXFilter的构造方法能调用templates.newTransformer(): 而InstantiateTransformer重写的transform方法中能获取类的构造方法方法并创建实例: 所以iArgs和iParamTypes都是我们可控的,可以通过将该方法来执行我们的TemplatesImpl.newTransfomer()方法: 12345678910正常写法:Constructor...
Java反序列化:CC2利用链深度解析
commons-collections 4.0Apache Commons Collections 4.0 是官方针对旧版(commons-collections)的结构性缺陷和 API 设计问题推出的独立进化版本。它常常被作为一个新的包,且与旧版commons-collections的命名空间并不冲突,可以共存在同一个项目中。 环境搭建 jdk 8u71 commons-collections-4.0 具体搭建流程可以看我之前文章。 注意commons-collections版本为4.0,jdk不影响,maven配置依赖时pom.xml写入的是: 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> ...
Java反序列化:CC3利用链深度解析
环境搭建 jdk 8u65 Commons Collection 3.2.1 jdk下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html#license-lightbox 由于该链子是在CC1或者CC6的基础上稍稍进行了改变,所以jdk是不受限制的,只不过看是在哪个链子上改变而已。具体环境搭建可以看我之前的文章 前言由于CC3是在CC1或CC6的基础上进行改变的,不熟悉的师傅可看我前两篇文章: Java 反序列化:CC1 利用链深度解析 Java 反序列化:CC6 利用链深度解析 同时该链子需要类加载机制及如何动态加载字节码的基础,可参考: Java类加载机制 java动态加载字节码 CC3分析TemplatesImpl类构造TemplatesImpl动态加载字节码我们先简单回顾一下TemplatesImpl是如何加载字节码的。 Java程序编译和执行流程: 1.java 源码 → javac 编译 → .class 字节码 → JVM...
Java反序列化:CC1利用链深度解析
Commons ClollectionsCommons Collection是Apache软件基金会的一个开源项目,它为 Java 的集合框架提供了一系列额外的集合类和算法。这些类和算法在 Java 的标准集合框架的基础上进行了扩展,使得开发者在处理集合数据时可以更加灵活和高效。Commons Collections 提供了各种强大的集合接口和实现,如有序集合、队列、堆等,以及一些高级算法,如过滤、转换等,并广泛运用于Java开发中。 环境搭建下载配置jdk-8u65下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html#license-lightbox 下载好后直接双击安装,因为后期会分析其他cc链,其对应jdk的版本也不同,所以尽量将下载的jdk放在一个目录下。 然后将下载后的jdk配置到IDEA里: 1左上角file->Project...
RCE-labs练习
靶场地址及官方wp:https://github.com/ProbiusOfficial/RCE-labs?tab=readme-ov-file 本文用的是CTF++平台进行复现的 level2考察代码执行的常见函数 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 <?php include ("get_flag.php");global $flag;session_start(); // 开启 sessionfunction hello_ctf($function, $content){ global $flag; $code = $function . "(" . $content . ");"; echo "Your Code: $code <br>"; eval($code);}function...
URLDNS链分析
概述HashMap实现了Serializable接口,可对HashMap对象进行反序列化操作 URLDNS是ysoserial中利用链的一个名字,因为URLDNS...










