月度归档: 2026 年 3 月

46 篇文章

CC7
CC7: 这个就是改了一下触发transform()的 版本要求: JDK < 8u121 Commons-Collections ≤ 3.2.1 LazyMap类: 还是从get()方法触发transform()方法入手: public Object get(Object key) { // create value for key if …
CC2
CC2: 就是个CC4的变种,只是用了CC3的字节码动态加载类,同时用InvokerTransformer直接触发newTransformer(),同时由于是字节码加载所以也不用考虑重复调用transform()。 POC: package org.example; import java.lang.reflect.Field; import ja…
CC5
CC5: 这个相比CC1只是出口变了一下。 LazyMap类: 我们知道这个类的get()方法可以触发transform()方法。 public Object get(Object key) { // create value for key if key is not currently in the map if (map.containsKe…
CC4
CC4: 影响版本: JDK 8 Commons-Collections:4 TransformingComparator类: 入口:compare()函数 public int compare(final I obj1, final I obj2) { final O value1 = this.transformer.transform(obj…
CC3
CC3: 这个链子主要是用于Runtime类用不了的时候,原理就是用类似类加载器的方法从字节中创立一个恶意对象出来。 环境: jdk8u71以前 Commons-Collections <= 3.2.1 TemplatesImpl类: 先看入口: 类加载器的defineClass()本来是protected类型,且知识加载类,不执行类。要额外…
CC6
CC6: 版本要求: JDK ≤ 8u76 CommonsCollections <= 3.2.1 在cc1中,我们已经知道了AnnotationInvocationHandler类的invoke方法可以触发LazyMap的get方法,但其实TiedMapEntry类的getvalue方法也可以触发。 LazyMap: 我们先来看LazyMa…
PHP
PHP 常用函数: preg_match():用于执行正则表达式匹配 preg_match($pattern, $subject) //$pattern是正则表达式,$subject是要匹配的字符串 parse_str():直接将查询参数解析到当前作用域变量中 $_GET['id']时有: id=a[]=www.polarctf.com is_nu…
CC1
java反序列化CC1链路 版本要求: commons-collections 3.1–3.2.1 jdk < 8u71 链路概览: /* Gadget chain: ObjectInputStream.readObject() AnnotationInvocationHandler.readObject() Map(Proxy).entry…
java反序列化基础知识
java反序列化: 基础知识: 序列化,反系列化方法: ObjectOutputStream类的 writeObject() 方法可以实现序列化。 ObjectInputStream 类的 readObject() 方法用于反序列化。 序列化过程就是: 对象 -> ObjectOutputStream (将对象转为字节) -> File…