区块链安全

智能合约安全漏洞之整数溢出

         加法溢出是这样的,那么减法溢出也是一样的,如果0-1的话,也就会变成0减1,这些数字就变成255。乘法溢出也是一样,252乘而成255这再乘以l就会导致乘法溢出。详细的我们可以看增速溢出攻击,我们SINESAFE公众号我们我们的官网上也有,那么现在,我们给大家具体分析一下实际案例,这个合约也是我们真实复现了一个整数溢出漏洞。

可以看到这个函数 best transfer中这个定义的是on it,定义的是第一行,定义的是on it。Cnt等于 reverse,那么这个值我们是可以控制的,它on it上有amount。等于on it。这是on it256这是前面的一个值,那么value值我们是可以控制的,所以溢出点就是存在这里,因为这两个值我们都可以控制,所以说我们就可以将only256设置为2,y6值设置为2乘,最终就会打导致证书溢出漏洞。这是一些具体的链上数据,我们这里给大家演示一下,整出溢出漏洞的原理。

题目分享一下,不是大概,大家能看多少,这个我尽量,这个框我问过那边。可以放的可以。那就Ok那这个大概可以看得比较清晰,那这边我们这是他的原来的存在漏洞的代码,直接复制下来。这边我们的版本是4点16了,就用4.16进行。稍等。

你执行一下开单,可以看到执行成功。我们先来看一下创建合约的地址,它存在才多少钱?可以看到多少多少这个数后面数字,我们也不输了。然后我们看一下其他两个,看一下这个值,我们到的等会是要用的,先给大家演示一下。这个是一个0,Ok没有问题,多一点。那么现在我们给它你能加入一些值,这是刚才演示的两个值都是 willing the我请你把它加入。再加一个2乘255的值,这个是2×5,5789这个值是2×25的值,就大概给大家讲一下,这个如果是我们刚才看了,它是点lungs,点让它判断这个数组的长度,我们这个填两个,然后就是二。

由于后面那个乘法,我们就直接跟2×2,这是一个2×25的数字直接跟它相乘就会导致整数溢出,这个给大家解释一下,然后我们执行一下。这个出错这个是应该是最快的问题。执行一下,我也可以看到执行结果成功,你拉小孔可以看到执行成功两个值出现成功。现在看一下这个值为多少。