ethernaut——NaughtCoin

文章讲述了如何在ERC20代币合约中,通过授权其他账户来绕过10年的转移限制,实现提前使用代币。这个过程涉及合约的漏洞分析,攻击者可以将自己的代币余额变为0,通过批准和转移From操作将代币转给自己。这强调了理解和审查合约继承行为的重要性。
摘要由CSDN通过智能技术生成

第十五关:NaughtCoin

本关知识点:

1. 了解erc20代币合约

1. 题目要求

您已经持有这些代币。问题是您只能在 10 年之后才能转移它们。您能尝试将它们转移到另一个地址,以便您可以自由使用它们吗?通过将您的代币余额变为 0 来完成此关卡。

2. 代码功能解读

请添加图片描述

3. 漏洞分析

绕过检查提前将代币发送给其他地址。
	查看引用的erc20合约,不止本人可以发送token。我们把钱授权给其他人,让其他人再转给我就行。

4. 攻击方法

1. 准备好另外一个账户
2. 将合约中的余额批准给另一个账户
3. 切换为另一个账户,将所有token发送给自己

5. 攻击调用图

approve给另一个账户
请添加图片描述

切换账户后transferFrom发送所有的token给自己
请添加图片描述

成功
请添加图片描述

6. 知识点分析

本合约继承了erc20合约,那么我们可以阅读ERC20合约查看可以不用本人直接转账,采用授权给其他人的方法,来提出token。所以,在我们阅读合约的过程中,对继承的合约,或者常见的合约类型进行分析是很重要的一点!

如果对大家有用,请点赞;如果喜欢,请订阅加点赞,会一直更新~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值