`
tcspecial
  • 浏览: 897537 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 反射攻击

    博客分类:
  • java
阅读更多

 

Java反射机制指的是程序在运行时能够获取自身的信息;它能动态截获或改写程序的行为。

 

1. 单例模式漏洞

/**
 * 懒汉式单例模式
 */
public class Singleton {
	private static Singleton instance = null;

	private Singleton() {

	}

	public static synchronized Singleton getInstance() {
		if( instance == null ){
			instance = new Singleton();
		}

		return instance;
	}
}

 

常规情况下,只能通过 getInstance() 创建实例;但是通过反射可以直接调用private方法创建实例。

/**
 * 单例反射攻击
 */
public static void singletonTest() throws Exception {
	Class<Singleton> clazz = (Class<Singleton>)Class.forName( "com.sun.Singleton" );

	Constructor<Singleton> constructor = clazz.getDeclaredContructor( null );
	constructor.setAccessible( true );	// 允许访问私有属性,跳过权限检查

	// 成功创建多个实例
	Singleton s1 = constructor.newInstance();
	Singleton s2 = constructor.newInstance();
}

 解决方案:在无参构造函数中再次检测instance是否存在。

 

2. 泛型漏洞

面试题:

给一个ArrayList<Integer>的一个对象,要在这个集合中添加一个字符串数据,如何实现呢?

大家都知道,泛型约束了集合的数据类型,添加非Integer数据会引起编译错误。

 

/**
 * 反射突破泛型检测
 */
public static void addString() throws Exception {
	List<Integer> list = new ArrayList<Integer>();
	list.add( 1 );
	
	// Get class
	Class<? extends List> clazz = list.getClass();
	// Get add method
	Method method = clazz.getMethod( "add", Object.class );

	// invoke 
	Object obj = method.invoke( list,  "str1" );
	obj = method.invoke( list, "str1" );
	obj = method.invoke( list, "str2" );
	
	// print
	for( Object i : list ){
		System.out.println( "Val: " + i );
	}
}

 

上述代码成功绕开泛型检测,执行结果如下:

Val: 1

Val: str1

Val: str2

 

 

 

 

 

分享到:
评论

相关推荐

    反射型xss攻击代码.rar

    xss攻击(java实现反射型xss攻击,发送链接诱骗点击,编写服务端获取客户端的cookie信息)

    奇安信安全扫描漏洞解决路径遍历和存储型xss和反射xss攻击漏洞

    亲测可用,中级漏洞,解决服务器段请求伪造 final String forURL = ESAPI.encoder().encodeForURL(url); restTemplate.exchange(forURL, HttpMethod.GET,new HttpEntity&lt;String&gt;(headers), List.class, params);

    (JAVA 版本的 官方经典PHash算法).zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    基于Java的XML解析与反射设计模式.doc

    基于Java的XML解析与反射设计模式 摘要:随着计算机时代的蓬勃发展,internet的普及给社会以及人民的生活带来了巨 大的影响。与此同时,b/s结构的多系统相互访问技术应时代的发展也如雨后春笋般不断 涌现出来,相应...

    java学习路线.pdf

    Java是一种流行的编程语言,创建于1995年,最初由Sun Microsystems开发,并由James Gosling发起。Java最初被设计为在各类消费电子产品上运行...Java提供了丰富的安全机制,以防止恶意代码的攻击。例如,Java对通过网络

    Java体系架构知识点整理,包括Java基础、Spring、MySQL、算法题等.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java知识点总结.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    深度学习java算法.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    常用算法 Java 实现.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java 面经手册.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    java 进阶之路.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    A星算法Java实现.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    使用 java 进行算法推理.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java算法:车牌识别.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    算法(Java版).zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java开发者技术书籍大全.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    数据结构算法Java实现。关于Java《数据结构算法》核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java实现FP-growth算法.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

    Java 排序算法知识点总结.zip

    动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...

Global site tag (gtag.js) - Google Analytics