首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出部分DAO (攻击)代码吗?

抛出部分DAO (攻击)代码吗?
EN

Ethereum用户
提问于 2020-01-23 21:32:13
回答 1查看 57关注 0票数 1

我附上了一张与刀攻击有关的图片。我从下面的链接虚空系统安全综述:漏洞、攻击与防御获得了图像

。该图像显示了包含“抛出”的代码。我对掷球很困惑,因为它会导致倒转。DOA的攻击用了‘扔’吗?有些人请指点我被扔在刀攻击中,为什么它没有引起所有交易的逆转(和退款)?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-01-23 23:42:39

不是的。

如果我正确地理解了这个图,它只是简单地显示合同,检查msg.sender.call.value(reward)结果,以确保它有效,如果传输被拒绝,它打算抛出,这是正确的做法。

它没有失败。它调用了攻击者(成功),这使攻击者有机会考虑重新输入。攻击者需要观察剩余的气体,以确保它不会从循环中耗尽,否则所有的东西都会松开。

当它决定停止重新输入并返回时,线程将从Y路径中删除,并从balances[msg.sender]中减去。这没有底流保护,所以该语句,如图所示,不会失败。在最坏的情况下,msg.sender最终会有一个巨大的平衡,这将是一个更多的恶作剧的开端。

在此之后,就不会有通向throw的路径了,尽管图表可能会让它看起来很像。“缺少”箭头不是疏忽。如果他们添加了一个"end“块,可能会更清楚。

希望能帮上忙。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/79282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档