By:小白
背景概述
上期我们了解了利用tx
functionmakeMoney(addressrecipient)publicpayable{require(msg
}contractVault{addressprivatemaker;addressprivateowner;uint256transferGasLimit;constructor()payable{owner=msg
modifierOnlyMaker(){require(msg
modifierOnlyOwner(){require(msg
functionsetMacker(address_maker)publicOnlyOwner{maker=_maker;}functiontransfer(addressrecipient,uint256amount)externalOnlyMaker{require(amount<=address(this)
functionwithrow()publicOnlyOwner{(boolsuccess,)=owner
receive()externalpayable{}fallback()externalpayable{}}//ThiscodeishiddeninaseparatefilecontractHack{eventtaunt(stringmessage);addressprivateevil;constructor(address_evil){evil=_evil;}modifierOnlyEvil(){require(msg
functiontransfer()publicpayable{emittaunt("Haha,youretherismine!");}functionwithrow()publicOnlyEvil{(boolsuccess,)=evil
receive()externalpayable{}fallback()externalpayable{}}
Maverick Protocol:wstETH日交易量市占率达58.1%,且资本效率最高:6月9日消息,去中心化交易平台 Maverick Protocol 援引 Dune 数据显示,该平台 wstETH 950 万美元日交易量市占率一度达 58.1%,同期 Uniswap 市占率为 3%,Curve 市占率为 34.3%。
此外,Maverick Protocol 的 wstETH 资本效率达 94.29%,同期 Uniswap 资本效率为 7.25%,Curve 资本效率为 0.46%。[2023/6/9 21:24:49]
局分析
可以看到,上述代码中存在三个合约,我们先结合前置知识中的A,B,C三个角色来区分三个合约分别代表什么角色:
MoneyMaker合约代表A合约;
Vault合约代表B合约;
Hack合约代表C合约。
所以用户以为的调用路径为:
韩国法务部向黑山法务部建议不要让Do Kwon获得保释:5月23日消息,韩国法务部向黑山法务部发表意见称,Terraform Labs首席执行官Do Kwon不应被允许保释。[2023/5/23 15:21:07]
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()向合约中打入不少于一个以太都会得到双倍以太的回报;
Lookonchain:某巨鲸今日从Binance提出867枚BTC:5月12日消息,据 Lookonchain 监测,一个擅长低买高卖的巨鲸今日从 Binance 提出 867 枚 BTC,价值约合 2280 万美元。[2023/5/12 14:59:50]
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转出。
Kava联创:若Evmos不能免费使用,Kava将构建和维护一个免费的EVM兼容模块:金色财经消息,Kava联合创始人兼CEOScottStuart发推表示,如果Ethermint(现Evmos)不能免费使用,Kava将构建和维护一个永久免费使用的EVM兼容模块。2021年10月Cosmos开发的Ethermint由于商标问题以及范围扩大升级为Evmos,它允许通过IBC与以太坊主网、EVM兼容环境和其他BFT链互操作。[2022/8/30 12:56:55]
预防建议
以太坊黑暗森林中你能相信的只有自己,不要相信任何人精彩的话术,交易记录不会造假,只有自己验证了对应的那笔交易后才能相信对方说的话是对的。
注:本文参考自《SoliditybyExample》https://solidity-by-example.org/hacks/randomness
标签:MAKEMakerMONONEMAKEUP价格makerdao怎么读SAFEMONEY价格onekey官网如何下载
忽略这篇文章可能会使您错失1,000,000美元。 为什么? 本文列出了60个新的第0/1/2层区块链,其中一些有潜力在下一次牛市中增长20倍、50倍甚至100倍.
1900/1/1 0:00:00DeFi的技术基础已被证明对过去几个月的灾难性市场事件具有令人难以置信的弹性。在DeFi轨道上构建新一代金融服务的机会从未如此之大,但这个行业需要解决一些显著的挑战.
1900/1/1 0:00:00摘要:上一篇报告从底层语言特点,对比了Move和Solidity的优势和特点。作为Web3的基础性研究,本篇从闪电贷这一最具特色的应用角度出发,分析了以太坊和Move分别如何实现闪电贷,Move怎样规避了闪电贷攻击?以太坊合约之间的交.
1900/1/1 0:00:00Web3引入了一种新的组织形式:代币化社区虽然它们与传统组织有很多共同点,但代币化社区推动形成了与之前的主流组织截然不同的经济模型。例如,我们根据资产和现金流对传统公司进行估值.
1900/1/1 0:00:00FTX前首席执行官SamBankman-Fried周三从巴哈马法院获准引渡后,被联邦调查局连夜带到美国,他抵达纽约法院接受美国重罪指控。美国纽约南区地方法院的案件指控罪名集中在欺诈、和违反竞选资金上.
1900/1/1 0:00:00香港财政司司长陈茂波: 致谢。早上好。很高兴出席开幕式。新年祝愿。我知道在做很多人头一次来到香港,也有些朋友对香港发展保佑疑虑。但最近很多朋友开始步入香港开始对香港一探究竟、在香港尝试创业。我可以跟大家说,香港的发展在历史的新起点.
1900/1/1 0:00:00