一、分析
1、前置知识
上一篇我写了智能合约的重入攻击漏洞,这一篇让我们来了解一下合约另外一个漏洞--溢出漏洞。
首先我们来看看溢出是什么:
溢出(overflow) 分为两种上溢和下溢:所谓上溢是指在运行单项数值计算时,当计算产生出来的结果非常大,大于寄存器或存储器所能存储或表示的能力限制就会产生上溢,例如在 solidity 中,uint8 所能表示的范围是 0 - 255 这 256 个数,当使用 uint8 类型在实际运算中计算 255 + 1 是会出现上溢的,这样计算出来的结果为 0 也就是 uint8 类型可表示的最小值。同样的,下溢就是当计算产生出来的结果非常小,小于寄存器或存储器所能存储或表示的能力限制就会产生下溢。例如在 Solidity 中,当使用 uint8 类型计算 0 - 1 时就会产生下溢,这样计算出来的值为 255 也就是 uint8 类型可表示的最大值。
2、漏洞合约
pragma solidity ^0.7.6;
contract TimeLock {
mapping(
本文分析了FISCO BCOS智能合约中的溢出漏洞,通过Truffle和remix复现了攻击过程,并展示了如何通过引入SafeMath库修复这个问题。攻击者通过精心构造的参数,使得合约中的时间锁定值溢出,从而在存储期限未到期前取回代币。
订阅专栏 解锁全文
1008

被折叠的 条评论
为什么被折叠?



