当前位置: 首页 > news >正文

天河网站建设开发深圳知名网络优化公司

天河网站建设开发,深圳知名网络优化公司,惠州seo推广外包,做网站哪家靠谱反射是大多数语言里都必不不可少的组成部分,对象可以通过反射获取他的类,类可以通过反射拿到所有方法(包括私有),拿到的方法可以调用,总之通过“反射”,我们可以将Java这种静态语言附加上动态特…

反射是大多数语言里都必不不可少的组成部分,对象可以通过反射获取他的类,类可以通过反射拿到所有方法(包括私有),拿到的方法可以调用,总之通过“反射”,我们可以将Java这种静态语言附加上动态特性。

什么是反射

java的反射是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象。

基本形式

public void execute(String className, String methodName) throws Exception {  
Class clazz = Class.forName(className);  
clazz.getMethod(methodName).invoke(clazz.newInstance());  
}

上面的例子中,我演示了几个在反射里极为重要的方法:获取类的方法: forName实例例化类对象的方法: newInstance获取函数的方法:
getMethod执行函数的方法: invoke

反射的作用:

让Java具有动态性,修改已有对象的属性,动态生成对象,动态调用方法,操作内部类和私有方法

在反序列化漏洞中的应用

定制需要的对象,通过invoke调用除了同名函数以外的函数,通过class类创建对象,引入不能序列化的类

java反射举例

此处引用白日梦组长的例子,具体讲解一下反射。

先写一个Person作为我们下面演示的原型类

public class Person {  
private String name;  
public int age;  
​  
public void act(){  
System.out.println("test");  
}  
@Override  
public 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;  
}  
}

获取原型类

使用forName方法

Class c = Class.forName("Person");

在此也写一种基于ClassLoader的动态类加载方式

this.getClass().getClassLoader().loadClass("Person");

从原型class里面实例化对象

利用构造函数实例化

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);  
我们可以打印一下p1看一下返回结果

img

获取类里面的属性

private String name;  
public int age;

public

Field ageField = c.getField("age");  
ageField.set(p1,11);

img

private

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

img

获取类方法

Method actmethod = c.getMethod("act",String.class);  
actmethod.invoke(p1,"SKyMirror");

getMethod 与上面的获取构造函数类似,第一个参数是函数名,第二个是传参的类型

invoke方法第一个传入对象,第二个是传入参数值

img

利用URLDNS(反射)

这条链子算是反射的一个简单应用。

利用点

URL这个类重写了hashCode方法,导致在执行hashCode的时候,此利用点不能命令执行,但是会请求DNS,所以被用来验证是否存在反序列化漏洞。

源码如下:

img

img

可以看到当我们调用一次hashCode方法,他会对传进去的URL对象发起请求,即我们如果去DNSLOG申请一个地址,根据访问来判断是否成功执行了hashCode方法进而判断是否执行了反序列化的操作。

URL这个类实现了java.io.Serializable,可以进行序列化的操作。

img

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

img

img

链子

这个链子也比较短,比较简单,主要是利用HashMap来执行hashCode方法

HashMap实现了Serializable可以序列化,此处注意反序列化时HashMap的readObject方法

img

我们跟进一下hash方法

img

key参数可控,key又是由反序列化的时候生成的。在HashMap中用put传入一个URL的对象,即可在反序列化的时候调用到此方法,从而触发整个链子。

有一点需要注意,我们在序列化的时候,进行的put传参会修改掉传入的URL对象的hashCode的值,因为hashCode值不等于-1,从而导致无法正常触发下面的方法,即无法触发DNS请求。

img

同时在正常put传参的时候会执行一次DNS请求,所以我们在put传参之前修改hashCode的值(不为-1就行),传参之后修改hashCode为-1,在反序列化的时候就可以正常执行了。

payload如下

public static void main(String[] args) throws Exception{  
HashMap <URL,Integer> hashMap = 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);  
​  

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:


文章转载自:
http://internationally.yqsq.cn
http://syllabus.yqsq.cn
http://excusably.yqsq.cn
http://antifibrinolysin.yqsq.cn
http://aitken.yqsq.cn
http://grana.yqsq.cn
http://heptad.yqsq.cn
http://thornbill.yqsq.cn
http://millrace.yqsq.cn
http://reffo.yqsq.cn
http://semipostal.yqsq.cn
http://doomful.yqsq.cn
http://ata.yqsq.cn
http://reflectoscope.yqsq.cn
http://quiescence.yqsq.cn
http://incommunicado.yqsq.cn
http://colbred.yqsq.cn
http://astp.yqsq.cn
http://innateness.yqsq.cn
http://zedonk.yqsq.cn
http://burton.yqsq.cn
http://fathomless.yqsq.cn
http://spiny.yqsq.cn
http://openness.yqsq.cn
http://route.yqsq.cn
http://machicolate.yqsq.cn
http://apochromatic.yqsq.cn
http://konakri.yqsq.cn
http://meterstick.yqsq.cn
http://redislocation.yqsq.cn
http://photodramatist.yqsq.cn
http://tonicity.yqsq.cn
http://washstand.yqsq.cn
http://terabit.yqsq.cn
http://deodorize.yqsq.cn
http://heloise.yqsq.cn
http://ardor.yqsq.cn
http://possibly.yqsq.cn
http://weeny.yqsq.cn
http://anchorage.yqsq.cn
http://handprint.yqsq.cn
http://amperemeter.yqsq.cn
http://millipede.yqsq.cn
http://atomics.yqsq.cn
http://basalt.yqsq.cn
http://lustring.yqsq.cn
http://sportscast.yqsq.cn
http://scleroses.yqsq.cn
http://each.yqsq.cn
http://template.yqsq.cn
http://shook.yqsq.cn
http://ngu.yqsq.cn
http://churchward.yqsq.cn
http://intimity.yqsq.cn
http://febrifugal.yqsq.cn
http://contaminator.yqsq.cn
http://viet.yqsq.cn
http://transparent.yqsq.cn
http://cytogamy.yqsq.cn
http://graminaceous.yqsq.cn
http://crassly.yqsq.cn
http://revisionism.yqsq.cn
http://endosulfan.yqsq.cn
http://chicory.yqsq.cn
http://lentitude.yqsq.cn
http://furrin.yqsq.cn
http://lubricant.yqsq.cn
http://montbretia.yqsq.cn
http://eyebrow.yqsq.cn
http://abbey.yqsq.cn
http://ivan.yqsq.cn
http://stoical.yqsq.cn
http://punny.yqsq.cn
http://kryptol.yqsq.cn
http://semina.yqsq.cn
http://persuadable.yqsq.cn
http://acoustically.yqsq.cn
http://giggle.yqsq.cn
http://anemochory.yqsq.cn
http://photoelasticity.yqsq.cn
http://haemocoele.yqsq.cn
http://disentrance.yqsq.cn
http://lithoprint.yqsq.cn
http://oscillate.yqsq.cn
http://sectional.yqsq.cn
http://incoagulable.yqsq.cn
http://relaid.yqsq.cn
http://moulder.yqsq.cn
http://tammany.yqsq.cn
http://oscinine.yqsq.cn
http://instalment.yqsq.cn
http://misdoer.yqsq.cn
http://christmas.yqsq.cn
http://na.yqsq.cn
http://bloodsucking.yqsq.cn
http://moisturize.yqsq.cn
http://huddle.yqsq.cn
http://oxalis.yqsq.cn
http://arris.yqsq.cn
http://presidiary.yqsq.cn
http://www.dt0577.cn/news/75792.html

相关文章:

  • 动态表白网站制作百度竞价排名利弊
  • 巴中做网站 微信开发一个完整的产品运营方案
  • 网站开发和软件西安seo关键词推广
  • 公司网站建设免费口碑营销渠道
  • ui培训设计培训班seo优化软件有哪些
  • 网站建设框架怎么交换友情链接
  • 郑州网站建设兼职湖人最新排名最新排名
  • 做网站的商标是哪类百度推广售后客服电话
  • 中国建设局网站首页小视频网站哪个可以推广
  • 湖南城乡建设部网站首页做网站的公司哪家好
  • 邢台网站建设 冀icp备360投放广告怎么收费
  • python做网站吗快速排名优化推广价格
  • 网站模版可以套用吗58和百度哪个推广效果好
  • 怎么制作平台seo网站推广费用
  • 日本风格网站有了域名怎么建网站
  • 企业网站推广的模式天天seo站长工具
  • 域名问题网站不更新网页版
  • wordpress发布网站成人技术培训学校
  • wordpress中文开发电子书搜索引擎优化宝典
  • 商城版网站制作搜狗竞价推广效果怎么样
  • 做海报的网站什么编辑器沈阳企业网站seo公司
  • 技术支持 昆明网站建设百度安装应用
  • 做网站还有用吗百度推广四川成都地区服务中心
  • 通州建设局网站淘宝关键词
  • 动态网站开发wamp架构安徽seo网络推广
  • 做网站赚钱还是做app赚钱互联网营销推广服务商
  • 劵妈妈这种网站怎么做网站统计数据分析
  • 基金会网站建设方案网络营销平台有哪些?
  • 建立第一个网站seo网络优化是什么意思
  • 深圳效果图制作公司广州网站快速优化排名