Hashtable AbstractMap.get 然后调用 LazyMap.get 这里的 Hashtable.put 与 remove 的原理与 cc6 类似 另外一说 要想执行 equals 必去让两个不同的 key 的 hash 值相同,因此要碰撞,所以就有了这 yy 与 zZ 看一下 HashTable 具体怎么调用的 首先进入 readObject 第一次进入 reconstitutionPut 的时候, key 为 lazyMap1 , value 为 test ,此时的 table 为 null 进入 因为 tab 是 null,所以 e 也是...

# Admin Panel (sqlite 自查询,原型链污染,ejs 注入) # 知识点 原型链污染 sqlite 注入 SSTI # 源码 app.js main.js module.exports = function(app, db, fs){ app.get('/', function(req, res){ res.render('index.html') }); app.post('/login', function(req, res){ var user...

# 环境搭建 这里的版本是 jdk8u65 配置 idea 先在 project structure 设置 再在 setting 里面设置 即可 # InvokerTransformer.transform CC1 漏洞点在 InvokerTransformer InvokerTransformer 可以看到这个类的 transform 方法中有任意方法调用 做个 demo 先用反射调用函数 import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class cc1...

分析在 cc4 poc import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;import javassist.ClassPool;import javassist.CtClass;import javassist.CtConstructor;import...

# TemplatesImpl 解析 在前面类动态加载中我们知道一般使用 defineClass 进行类加载 但是这里只加载但是不执行而且这个方法的属性为 protected ,而我们要找到其 public 的类,所以去 Find Usages 一下 一下就找到了,跟进 这里没有写作用域,所以是 default,就是说自己的包里能调用,再找一下哪里调用了这个函数 发现在自己的 defineTransletClasses 下调用了,再找一下谁调用了这个函数 直接看 getTransletInstance 类 发现这里有一个 newInstance...

测试环境:4.0 因为 CommonsCollections4 除 4.0 的其他版本去掉了 InvokerTransformer 的 Serializable 继承,导致无法序列化。 我们找了 TransformingComparator.compare 进行字节码加载 查看哪里调用了 TransformingComparator.compare 发现在 PriorityQueue.readObject 开始构造 先看 TransformingComparator 的构造方法 可以直接赋值 然后看 PriorityQueue...

BadAttributeValueExpException 注意在构造函数的时候会直接调用 toString方法 ,所以一开始需要赋值一个其他的,反序列化的时候再给 TiedMapEntry TiedMapEntry poc import javassist.ClassPool;import javassist.CtClass;import javassist.CtConstructor;import org.apache.commons.collections.Transformer;import...

# Apache Commons BeanUtils 简介 Apache Commons 工具集下除了 collections 以外还有 BeanUtils ,它主要用于操控 javabean 。 举个与反序列化攻击有关的操控 javabean 的例子。 public class Person { private String name = "catalina"; public String getName() { return name; } public void setName(String name)...

https://www.anquanke.com/post/id/256986#h3-7 https://www.bilibili.com/video/BV1LZ4y1m7Ah?spm_id_from=333.999.0.0 # 源码 给了 jar 包与 Dockerfile From openjdk:8u222-slimRUN apt-get update -y \ && apt-get install curl -y \ && useradd ctf \ && mkdir...