
代码审计 | CC2 链 —— _tfactory 赋值问题 PriorityQueue 新入口
代码审计 | CC2 链 —— _tfactory 赋值问题 PriorityQueue 新入口目录 前言 环境 链路分析 Sink:TemplatesImpl 与 _tfactory 赋值问题 InvokerTransformer TransformingComparator(关键节点) PriorityQueue:入口点 EXP 编写 完整调用链追踪 为什么必须用 CC 4.0 小结...

代码审计 | CC2 链 —— _tfactory 赋值问题 PriorityQueue 新入口目录 前言 环境 链路分析 Sink:TemplatesImpl 与 _tfactory 赋值问题 InvokerTransformer TransformingComparator(关键节点) PriorityQueue:入口点 EXP 编写 完整调用链追踪 为什么必须用 CC 4.0 小结...

代码审计 | CC3链 —— 实例化 vs 反序列化 InvokerTransformer vs InstantiateTransformer目录 环境说明 CC3的设计思路 前置知识:实例化触发 vs 反序列化触发 readObject 触发实验 newInstance 触发实验 反射补充:clazz.newInstance() 的限制 构造恶意 Class:EvilClass ...

代码审计 | CC6 链 —— 反向构造 payload 与 ysoserial 为什么需要 CC6?CC1 的限制 CC6 存在的意义 调用链全貌 一步步构造 CC6 第一步:用 ChainedTransformer 串联恶意链 第二步:LazyMap.get() 触发 transform 第三步:谁调用 get()?——TiedMapEntry.getValue() 第四步:谁调用 ge...

代码审计 | CC1 LazyMap 链 —— 动态代理 学习笔记,记录自己学 CC1 LazyMap 版的思路历程 前置:已经看完 TransformedMap 版,Transformer 链那部分这里就不重复了,直接从”触发点不同”讲起。 目录 和 TransformedMap 版有什么区别 第一步:LazyMap 的触发机制 第二步:谁来调用 LazyMap.get() Annot...

学习笔记,记录自己学 CC1 链的思路历程,不是教程,有啥问题欢迎交流。 目录 最终目标是什么 通过反射调用函数 但实际场景中没地方写代码怎么办 方式 A:直接传输 Payload(CC 链) 方式 B:远程类加载 Gadget Chain 的由来 CC1 链构造过程 环境准备 第一步:找到能执行命令的点 —— InvokerTransformer 第二步:Runtime 不能序列...