简介适用版本:commons-collections-4.0, jdk7u21及以前反序列化漏洞点是InvokerTransformer类的transform方法,并且在TransformingComparator的compare方法中有所调用,该compare方法是java.util.Comparator的compare方法的实现方法。Comparator接口的compare方法在Prio...
简介Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。作为Apache开源项目的重要组件,Commons Collections被广泛应用于各种Java应用的开发。需要知识点 适用版本:3.1-3.2.1,jdk1.8以前原理首先我们先来看主要的利用代码,主...
POP GadgetsPOP Gadgets指的是在通过带入序列化数据,经过一系列调用的代码链,其中POP指的是(Property-Oriented Programming),即面向属性编程,和逆向那边的ROP面向返回编程(Return-Oriented Programing)很相似,面向属性编程POP常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程ROP的原理相似,都是从现...
动态编程动态编程是相对于静态编程而言的,静态编程语言例如Java,动态编程语言例如JavaScript。两者的区别简单的说就是在静态编程中,类型检查是在编译时完成的,而动态编程中类型检查是在运行时完成的。所谓动态编程就是绕过编译过程在运行时进行操作,在Java中有如下三种常见方式:反射动态获取的信息以及动态调用对象的方法。动态编译动态编译是从Java 6开始支持的,主要是通过一个JavaCo...
动态代理简介代理是一种常用的设计模式,其目的就是为真实对象提供一个代理对象以控制对真实对象的访问。代理类负责为委托类(被代理类、真实类)预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象简单的...