By:小白@慢雾安全团队
背景概述
上次我们了解了什么是溢出漏洞和如何预防和发现它。这次我们要了解的是solidity中自带的函数——?selfdestruct自毁函数。
前置知识
我们先来了解solidity中能够转账的操作都有哪些:
1
}functionclaimReward()public{require(msg
}漏洞分析
声音 | 浪潮集团云南分公司总经理:云南区块链产业发展需从“科普”到“专精”不断深化:据昆明日报消息,浪潮集团云南分公司总经理郑昕表示,云南区块链产业发展需从“科普”到“专精”不断深化。下一步,浪潮将继续加大云南农业产业高质量发展体系建设力度,重点以普洱茶等云南优势产业为切入点,打造云南“绿色、有机农产品高地”的品牌形象,并在此基础上,开展基于区块链的供应链金融服务,解决中小企业贷款难、贷款贵问题。[2019/11/11]
EtherGame合约实现的功能是一个游戏,我们这里可以称它为“幸运七”。玩家每次向EtherGame合约中打入一个以太,第七个成功打入以太的玩家将成为winner。winner可以提取合约中的7个以太。
玩家每次玩游戏时都会调用EtherGame
functionattack()publicpayable{addresspayableaddr=payable(address(etherGame));selfdestruct(addr);}这里我们还是引用三个角色来讲解攻击合约的攻击过程
玩家一:Alice
玩家二:Bob
攻击者:Eve
1.开发者部署EtherGame合约;
科普时报:区块链与云计算长期发展目标不谋而合:据《科普时报》今日报道,区块链与云计算两项技术的结合,从宏观上来说,一方面,利用云计算已有的基础服务设施或根据实际需求做相应改变,实现开发应用流程加速,满足未来区块链生态系统中初创企业、学术机构、开源机构、联盟和金融等机构对区块链应用的需求。另一方面,对于云计算来说,“可信、可靠、可控制”被认为是云计算发展必须要翻越的“三座山”,而区块链技术以去中心化、匿名性,以及数据不可篡改为主要特征,与云计算长期发展目标不谋而合。[2018/5/4]
2.玩家Alice决定玩游戏,她这辈子玩游戏从来没赢过,她觉得这个游戏可以让她体验一次当winner的快感,所以她决定连续调用EtherGame
}functionclaimReward()public{require(msg
}作为审计者
作为审计者我们需要结合真实的业务逻辑来查看address(this).balance的使用是否会影响合约的正常逻辑,如果会影响那我们就可以初步认为这个合约存在被攻击者强制打入非预期的资金从而影响正常业务逻辑的可能。在审计过程中还需要结合实际的代码逻辑来进行分析。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。