漏洞介绍
整数就是没有小数的数字
在计算机中。有符号数用二进制表示。表示负数的时候。将二进制最高为来表示数字的符号,最高为是1就是负数。最高位是0就表是正数
当然。还有无符号数。也就是没有负数。
当我们尝试将一个数字范围为0-255的数字。
输入256时。就会溢出。返回0
输入257时。返回1
当有符号数溢出时。会从最小的值开始,-xxxxx然后依次+1
以下是各类符号范围大小
漏洞危害
1:
数据截断
当发生溢出时。数据会被截断。
a\b\r为3个8位无符号整数。范围大小为0-255
a=11111111
b=00000001
r=a+b=100000000
由于a和b相加的值超出了8位。发生溢出。截取8位。r就变成了0
2:
宽度溢出
当一个较小宽度的操作数被提升到了较大操作数一样的宽度。然后进行计算。如果计算结果放在较小宽度那里
那么长度就会被截断为较小宽度。比如一个32位的运算结果。放到了16位寄存器。那么就会取后16位
3:
改变符号
有符号整数溢出时。就会改变正负。
0x7fffffff+1=0x80000000=-2147483648
4:
无符号与有符号转换
将有符号数赋给无符号数后。会从-1变成无符号数的最大数
当把无符