逆向之整数溢出漏洞
逆向之整数溢出漏洞
溢出漏洞的简介
- 溢出漏洞的概念:
溢出是黑客利用程序的漏洞,专门开发的一种程序,加相应的参数运行后,就可以达到某种目的。溢出是程序设计者设计时的不足所带来的错误
- 溢出的类型:
溢出分为缓冲区溢出、 内存溢出、数据溢出等
整数的概念
- 整数的分类:
在计算机中,整数分为无符号整数以及有符号整数两种
- 数据在计算机中的存储方式:
数据在计算机中的存储方式都是二进制序列的形式,比如整数“10”在计算机中就是以二进制序列“1010”进行存储的。
- 常见的整数类型:
常见的整数类型有8bit(单字节字符、布尔类型) 16bit(短整型) 32bit(长整型)等。
整数溢出
- 整数溢出定义:
计算机中整数都有一个宽度,即可以表示的最大值。当试图保存一个比它可以表示的最大值还大的数时,就会发生整数溢出。
例如,将一个32bit的int类型数据存放在一个8bit的char类型变量里就会发生整数溢出现象整数溢出有的时候不会造成太大的影响,但也有可能导致极为严重的后果
- 整数溢出危害:
ISOC99标准规定整数溢出将导致“不确定性行为”,意即遵循标准的编译器可以做它们想做的任何事,比如完全忽略该溢出或终止进程。大多数编译器都会忽略这种溢出,这可能会导致不确定或错误的值保存在了整数变量中。
避免溢出的方法
- 尽早释放无用对象的引用
- 程序进行字符串处理时,尽量避免使用String,而应使用StringBuffer。
- 尽量少用静态变量。
- 避免集中创建对象尤其是大对象,如果可以的话尽量使用流操作
代码
愿路途漫长,以后莫失莫忘。 愿你不骄不躁,安稳顺心。
作者:菜鸟-传奇
本文版权归作者和博客园共有,重在学习交流,不以任何盈利为目的,欢迎转载。
敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。