通过一个类获取任意的类。如已知java.lang.Math 这个类,然后调用java.lang.Math.class.forName('xx)就可以执行Java 代码。如以下exp
知识点:
通过类对象的getConstructor()或getDeclaredConstructor()方法获得构造器(Constructor)对象并调用其newInstance()方法创建对象,适用于无参和有参构造方法。
getConstructor()的参数是class[],即类数组,newInstance()的参数是类数组对应的对象数组。
上述exp的核心含义为,执行BufferedReader对象的readLines()方法。中间的过程实质为:
BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(java.lang.Runtime.getRuntime().exec(\"cat /etc/passwd\")
网友评论