java

java反序列化CC3

学习动态加载字节码的时候学到了TemplatesImpl加载字节码的方法。我们也可以利用这个特性进行命令执行。结合之前CC1的手动加载我们可以写一个简单的demo,这里用p神的 1234567891011121314151617181...

java

java动态加载字节码的方法

讨论方法前先来看看什么是字节码 什么是java字节码严格来说,Java字节码(ByteCode)其实仅仅指的是Java虚拟机执行使用的一类指令,通常被存储在.class文件中。但是我们讨论的字节码可以扩大范围——所有能够恢复成一个类并...

java

java反序列化CC6

因为sun.reflect.annotation.AnnotationInvocationHandler#readObject 的逻辑变化,导致cc1的链子在8u71版本后无法使用。所以要找一条能在java更高版本使用的链子。 cc6...

java

java反序列化CC1-2

上一篇命令执行是我们手动触发的put方法进行添加新元素,那么真正的反序列化poc呢?看看p神给的poc 1234567891011121314151617181920212223242526272829303132333435363...

java

java反射学习-3

解决两个问题1.如果一个类没有无参构造方法,也没有类似单例模式里的静态方法,我们怎样通过反射实例化该类呢?2.如果一个方法或构造方法是私有方法,我们是否能执行它呢? 第一个问题这里要引入新的反射方法 getConstructor 和...

java

java反射学习-2

上一篇学完了反射的基础,接下来深入学习一下。 在正常情况下,除了系统类,如果我们想拿到一个类,需要先 import 才能使用。而使用forName就不 需要,这样对于我们的攻击者来说就十分有利,我们可以加载任意类 同时,forName...