区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > 狗狗币 > 正文

JPEG:智能合约安全审计入门篇 —— 移花接木_Maker

作者:

时间:

By:小白

背景概述

上期我们了解了利用tx

functionmakeMoney(addressrecipient)publicpayable{require(msg

}contractVault{addressprivatemaker;addressprivateowner;uint256transferGasLimit;constructor()payable{owner=msg

modifierOnlyMaker(){require(msg

modifierOnlyOwner(){require(msg

智能合约平台Firechain完成300万美元Pre-Seed轮融资,Genblock Capital领投:5月24日消息,异步智能合约平台Firechain近日宣布完成300万美元Pre-Seed轮融资,Genblock Capital领投,MGNR、Cogitent Ventures、1NVST、Ankr等参投。此轮融资资金将用于扩大团队规模、加快发展路线图、以及推出其创新区块链平台。

据悉,Firechain构建异步、事件驱动的混合账本模型架构,以支持免费交易、可证明安全链上随机性等功能。Firechain计划于6月发布其DLT网络的公开测试网。[2023/5/24 15:22:12]

functionsetMacker(address_maker)publicOnlyOwner{maker=_maker;}functiontransfer(addressrecipient,uint256amount)externalOnlyMaker{require(amount<=address(this)

Polkadot智能合约平台Clover Finance发布第一版测试网:1月19日消息,Polkadot 生态智能合约平台 Clover Finance 正式发布第一版测试网,目前仅对开发者和专业节点开放。[2021/1/19 16:31:15]

functionwithrow()publicOnlyOwner{(boolsuccess,)=owner

receive()externalpayable{}fallback()externalpayable{}}//ThiscodeishiddeninaseparatefilecontractHack{eventtaunt(stringmessage);addressprivateevil;constructor(address_evil){evil=_evil;}modifierOnlyEvil(){require(msg

动态 | IOHK发布新电子书 以帮助开发人员为Cardano编写高效智能合约:IOHK最近发布了一本名为《普路托斯:编写可靠的智能合约》(Plutus: Writing reliable smart contract)的电子书。该书作者Lars Brunjes、Polina Vinogradova表示,他们的主要目标是帮助开发人员为Cardano网络编写高效的智能合约。Vinogradova补充表示,这本书提供了开发高效智能合约的逐行指导,同时简要介绍了在Cardano的生态系统中会计是如何工作的。[2019/8/3]

functiontransfer()publicpayable{emittaunt("Haha,youretherismine!");}functionwithrow()publicOnlyEvil{(boolsuccess,)=evil

将开发区块链智能合约系统 日本Pixel股价暴涨:据日本媒体报道,在持续了五天的平静之后,Pixel campanyz的股价今日(4月19日)出现了急速上涨。4月18日收盘后,Pixel campanyz宣布该公司已受托利用区块链技术进行智能合约系统开发,这一利好消息或是促进该公司股价大涨的主要因素。[2018/4/19]

receive()externalpayable{}fallback()externalpayable{}}

局分析

可以看到,上述代码中存在三个合约,我们先结合前置知识中的A,B,C三个角色来区分三个合约分别代表什么角色:

MoneyMaker合约代表A合约;

Vault合约代表B合约;

Hack合约代表C合约。

所以用户以为的调用路径为:

MoneyMaker->Vault。

而实际的调用路径为:

MoneyMaker->Hack。

下面我们来看看攻击者如何完成局的:

1.?Evil部署Vault(B)合约并在合约中留存100ETH资金,在链上将Vault(B)合约开源;

2.?Evil部署Hack(C)恶意合约;

3.?Evil放出消息说他将会部署一个开源的赚钱MoneyMaker(A)合约,部署时会将Vault(B)合约地址传入且会调用Vault.setMacker()将maker角色设置为MoneyMaker合约地址,任何人调用MoneyMaker.makeMoney()向合约中打入不少于一个以太都会得到双倍以太的回报;

4.?Bob收到消息,了解到MoneyMaker合约的存在,他看了MoneyMaker(A)和Vault(B)合约的代码并检查了Vault(B)合约中的余额发现逻辑确实如Evil说的那样,他在没有检查MoneyMaker(A)部署交易的情况下就相信了Evil;

5.?Bob调用MoneyMaker.makeMoney()向合约中打入自己全部身家20ETH,在他满怀期待等着收到Vault(B)打来的40ETH时等来的却是一句"Haha,youretherismine!"。

咋回事呢?其实这个局非常简单但是很常见。Evil在部署MoneyMaker合约时传入的并不是Vault合约的地址,而是传入了Hack合约的地址。所以当Bob调用MoneyMaker.makeMoney()时并不会像他想像中的那样MoneyMaker.makeMoney()去调用Vault.transfer()回打给他双倍的以太,而是调用了Hack.transfer()抛出了一个事件:"Haha,youretherismine!"。最后Evil调用Vault.withrow()将Vault合约中的100ETH转出,并通过Hack.withrow()将Bob转入的20ETH转出。

预防建议

以太坊黑暗森林中你能相信的只有自己,不要相信任何人精彩的话术,交易记录不会造假,只有自己验证了对应的那笔交易后才能相信对方说的话是对的。

注:本文参考自《SoliditybyExample》https://solidity-by-example.org/hacks/randomness

标签:JPEGMAKEJPEG'dMakerMAKEUP价格Crypto Makers Foundation

狗狗币热门资讯
区块链:a16z:探讨区块链的关键价值来源,何时去中心化会更有价值?_POW

如果你想创建一个“新Facebook”或“新Google”,你应该使用一个常规公司还是通过区块链利用去中心化的实现?答案似乎很简单:加密货币爱好者会响亮地回答“是”,而怀疑论者则会摇头.

FILE:不要碰Aptos,细数曾经的“天王级项目”是如何没落的?_什么是区块链技术

0x01历史上那些“天王级”项目曾经币圈有几个非常火热的天王级项目,它们都有一个或多个这种特征:明星技术团队、顶级风投机构、华丽的创业背景、宏大的发展蓝图.

稳定币:把寒气传递给每一个人丨 2022 年crypto 大事记_Weos

图片来源:由MazeAI工具生成2022年马上过去了,在这不平静的一年,Web3和crypto有太多的事情值得回味.

WEB:NFTFi的核心机制和赛道分析_WEB3ALLBI币

摘要 随着2020年DefiSummer和2021年NFTSummer的狂欢过去,最近越来越多的人将目光开始投射在NFTFi上.

GEN:EigenLayer:一个“再质押”的解决方案_LAYER

这可能是下一个大事件之一。新平台@EigenLayer,一个“再质押”的解决方案。没有Discord.没有空投公告。没有代币细节。目前还没有揭露很多.

区块链:都说现在是区块链的 Web3、元宇宙早期,但有多早?还有多少机会?_LAYER

区块链是由一系列技术实现的全新去中心化经济组织模式,2009年诞生于比特币系统的构建,2017年成为全球经济热点,但区块链的成功应用寥寥,这个新兴产业还远未成熟.