2018年4月, BTC由于整数溢出漏洞,导致黑客攻击凭空蒸发10亿美金,价值几乎归零。整数溢出漏洞比较严重,我们看这块整数一处漏洞是因为黑客控制on it256跟 cnt值跟y流值,从而二乘达到了二乘2×255的值,所以说达到了整数溢出漏洞,我们后面会详细讲,这个大概给大家解释一下。然后2018年SMT,由于整数溢出漏洞,导致黑客攻击,最终损失1.4亿美金,有可能这是一个上面是个乘法溢出,下面是一个加法溢出,加法溢出也是原理差不多,一个是y6就是达到了它预期的值,超过了他预期的这 y6加,我也有的值可以控制,这个值可以控制,那么就可以出现这种证整数溢出漏洞。
下来我们具体看一下,整数溢出漏洞,我们平时分为上溢和下溢,活跃中出现整数溢出漏洞的类型,包括三种,就是乘法溢出,加法溢出和减法溢出。大家可以看我这大概也是在思路,在语言中就是真合于,语言中的所谓的语言中,它变量支持的整数类型,乘以8的递增,例如就是一个以8,一个on a的8类型只能存储在范围到0,范围0~2的8次方减1,也就是0~255的数字。
一个on it256的类型只能存在0到二的256次方减1的数字,那么以太坊信息中为整数指定固定大小的数据类型,而且是无符号的,也就是说在以以太坊之中,一个整形变量只能有一定范围的数字表示,不能超过这个制定的范围。如果试图存储256个这个数字,到了一定的it8类型中200这个256个数字,最终将变成08倍的整形,可以表示为0~255, our内存按照存储就分为以下这种模式,那255存储就会这8个18个1,这加起来肯定是没有问题。
那么如果说,是给他加个1会发生什么情况,那么由一开始递减,开始d加1+1就就会导致这所有的位置为0,导致前面加1,因为前面不会存在,都是8位,不会存在,所以说所以说就会导致整体的反转为0,最后导致 by it表示类型就会变为0,加1的话就会所有都会变为0。