ethernaut——Fallback

本关的区块链挑战聚焦于Fallback函数。在Solidity 0.6.0及更高版本,receive关键字用于接收以太币。若转账时无明确函数匹配,会触发receive或fallback,后者仅在receive未匹配时执行。理解ether单位如wei、gwei和ether的转换对于正确发送value至关重要。
摘要由CSDN通过智能技术生成

第一关:Fallback

本关知识点:

1. ether的单位转换
2. 如何触发回调方法

1. 题目要求

获取合约所有权,并取出合约中的钱

2. 代码功能解读

1. 构造器初始化Fallback合约,部署者赋值给变量owner,并给合约部署者1000个以太的初始贡献值。
2. contribute是一个支付方法,每次发送的eth必须小于0.001 ether,且当玩家发出的总数大于合约owner时,玩家成为owner。
3. getContribution方法查看调用者的捐赠总数。
4. withdraw方法,只有owner才能调用,将合约所有ether发送给owner。
5. receive时一个可支付的回调方法,当玩家发送的余额大于0,且在合约中有过捐赠,则可以成为owner。

3. 漏洞分析

攻击点在于如何成为owner,因为我们成为owner之后就可以获得所有钱。
	通过触发receive()这个回调方法,可以让我们成为owner。
	成为owner后取钱。

4. 攻击方法

1. 通过调用一次contribute()方法和一次receive()方法,让自己成为合约拥有者。
2. 调用withdraw取出合约中的所有钱

5. 攻击调用图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值