《区块链安全与隐私》课件——5.4 智能合约漏洞-自毁函数漏洞.pptxVIP

《区块链安全与隐私》课件——5.4 智能合约漏洞-自毁函数漏洞.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

自毁函数漏洞04

自毁函数是由以太坊虚拟机EVM提供的一项功能,用于销毁区块链上部署的智能合约。当合约执行自毁操作时,合约账户上剩余的ETH会发送给指定的目标地址,然后其存储和代码从以太坊状态中被移除。自毁函数在solidity中定义为selfdestruct。也就是说,智能合约在某些特殊情况下可以自行毁灭,比如:存在致命bug、废弃不再使用等。需要注意的是,一旦调用了selfdestruct函数,合约的代码将被销毁,合约账户中的所有余额将被发送到指定的地址上,并且以后无法再调用合约的其他函数。在实际开发中,selfdestruct函数通常用于销毁合约并将资金返回给某个预定的合约拥有者或其他指定地址,方便进行清算或转移。自毁合约漏洞-原理

自毁合约漏洞-漏洞智能合约介绍

自毁合约漏洞-remix模拟正常游戏1.使用账号1部署EtherGame合约,并传入1个以太用来模拟第一个游戏者(模拟第一个游戏者玩游戏投入)2.查看合约账户余额getBalanace或者balances(1个以太),查看TargetAmount(7个以太),查看传入合约的以太(1个以太),查看winner:无3.查看账号1余额(98.99999....eth)==传入了1个以太和gas费4.点击deposit开始游戏5.点击claimReward,查看是否获奖。=未获奖6.再次查看合约账户余额getBalanace或者balances(1个以太),查看TargetAmount(7个以太),查看传入合约的以太(1个以太),查看winner:无=没有改变结果:大概率游戏失败

自毁合约漏洞-remix模拟游戏成功1.使用账号1部署EtherGame合约,并传入7个以太用来模拟第一个游戏者(模拟第7个游戏者玩游戏投入)2.查看合约账户余额getBalanace或者balances(7个以太),查看TargetAmount(7个以太),查看传入合约的以太(7个以太),查看winner:无3.查看账号1余额(98.99999....eth)==传入了7个以太和gas费4.点击deposit开始游戏5.点击claimReward,查看是否获奖。=获奖6.再次查看合约账户余额getBalanace或者balances(0个以太),查看TargetAmount(7个以太),查看传入合约的以太(7个以太),查看winner:账号1地址

自毁合约漏洞-remix尝试攻击漏洞合约

自毁合约漏洞-remix尝试攻击漏洞合约1.模拟游戏失败的的基础上进行攻击2.使用账号2部署攻击合约attack,传入7个以太。3.获取攻击合约余额7个以太。4.进行攻击attack,传入步骤1的合约5.再次查看攻击合约余额为0个以太。(通过自毁合约传递)6.查看步骤1中余额getBalance,变为8个以太。=智能合约余额超乎7,游戏逻辑失败。

自毁合约漏洞-漏洞修复不使用address(this).balance作为余额,另外命名有一个balance的变量用于记录合约的用户存款金额,这一样判断的就是这个变量balance,和合约地址剩余余额就没关系

1.在新建文件夹中创建空白truffle文件2.Contract文件夹下创建漏洞合约:demo1_repair.sol3.trufflecompile编译智能合约4.Migration文件夹下创建1_deploy_RandomGame文件:5.trufflemigrate部署智能合约constRandomGame=artifacts.require(RandomGame);constAttackRandom=artifacts.require(AttackRandom);module.exports=asyncfunction(deployer,accounts){awaitdeployer.deploy(RandomGame);a=awaitRandomGame.deployed();awaitdeployer.deploy(AttackRandom,a.address);}整数溢出-truffle测试漏洞代码

6.在test文件夹下创建testDemo1.test.js文件自毁合约漏洞-Truffle测试漏洞

1.在新建文件夹中创建空白truffle文件2.Contract文件夹下修复漏洞合约:badrandom_repair.sol3.trufflecompile编译智能合约4.Migration文件夹下创建1_deploy_RandomGame文件:5.trufflemigrate部署智能合约

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档