智能合约漏洞学习笔记(1):重入攻击

前置知识

  • 回退函数(fallback function):每一个合约有且仅有一个没有名字的函数,无参数,无返回值
function() public payable{
	...
}

回退函数在以下几种情况中被执行:

  1. 调用合约时没有匹配到任何一个函数
  2. 没有传数据
  3. 智能合约收到以太币
    (为了接受以太币,fallback函数必须标记为payable)
  • 硬分叉:添加无法向下兼容的新规则,使得以太坊网络存在两条链:运行新规则的新链和运行旧规则的旧链

第一次硬分叉:调整了未来挖矿的难度,确保未来的用户会有转换至权益证明的动机。

第二次硬分叉:2016年春季发布了第一个稳定版本,称作“家园”(Homestead)。

第三次硬分叉:DAO和区块链分叉。

第四次硬分叉:减重和防DDoS2016年11月底进行了第四次的分叉。这次分叉为区块链减重(de-bloat),并加入一些避免网络攻击的设计。

漏洞介绍

重入是以太坊早期最著名、最危险的攻击方式,在2016年的The DAO事件中造成了以太坊硬分叉。

重入攻击本质上与编程的递归调用相似,攻击合约利用fallback函数可以使受攻击合约在任意位置重新执行,绕过原设计者的限制,从而完成一些不允许的行为。

简要来说,含有.call.value()函数的智能合约都具有重入漏洞

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值