By:小白
背景概述
上期我們了解了利用tx
functionmakeMoney(addressrecipient)publicpayable{require(msg
}contractVault{addressprivatemaker;addressprivateowner;uint256transferGasLimit;constructor()payable{owner=msg
modifierOnlyMaker(){require(msg
modifierOnlyOwner(){require(msg
Circle推出以太坊、Avalanche跨鏈USDC轉賬協議:金色財經報道,Circle 宣布已經啟動了一個主網協議,允許用戶在以太坊和 Avalanche 之間轉移 USDC。Circle 團隊在公告中表示,希望 CCTP 能夠解決 Web3 生態碎片化的問題,許多最大的跨鏈協議已經承諾在未來使用 CCTP,包括 Celer、Hyperlane、LayerZero、LI.FI、MetaMask、Wormhole 等。[2023/4/26 14:28:51]
functionsetMacker(address_maker)publicOnlyOwner{maker=_maker;}functiontransfer(addressrecipient,uint256amount)externalOnlyMaker{require(amount<=address(this)
USDC交易所取款次數創一個月高點:11月7日消息,Glassnode數據顯示,USDC交易所取款次數創一個月高點,每小時達71.226次。[2022/11/7 12:27:12]
functionwithrow()publicOnlyOwner{(boolsuccess,)=owner
receive()externalpayable{}fallback()externalpayable{}}//ThiscodeishiddeninaseparatefilecontractHack{eventtaunt(stringmessage);addressprivateevil;constructor(address_evil){evil=_evil;}modifierOnlyEvil(){require(msg
經濟學家:Celsius用戶可能拿不回自己的錢:7月15日消息,著名經濟學家、加密貨幣批評者Frances Coppola不相信Celsius儲戶能夠拿回自己的錢,并稱Celsius是一家“影子銀行”:“Celsius不是一家資產管理公司,而是一家影子銀行。銀行存款甚至不是客戶資產,更不是管理資產。這些是給銀行的無抵押貸款。因此,它們是銀行的負債,完全有破產的風險。”
Coppola表示:“Celsius的使用條款完全清楚地表明,將資金存入其計息賬戶的客戶是在把資金借給Celsius,讓Celsius想怎么用就怎么用。而且特別指出,在破產的情況下,客戶可能拿不回他們所有的錢,甚至是任何錢。”(Crypto Potato)[2022/7/15 2:16:36]
functiontransfer()publicpayable{emittaunt("Haha,youretherismine!");}functionwithrow()publicOnlyEvil{(boolsuccess,)=evil
尼日利亞區塊鏈和加密協會推出虛擬資產服務提供商行為準則:6月6日消息,尼日利亞區塊鏈技術協會(SIBAN)的利益相關者最近宣布為尼日利亞虛擬資產服務提供商(VASP)引入行為準則。該行為準則由尼日利亞總統辦公室發起,適用于所有尼日利亞VASP。(News Bitcoin)[2022/6/6 4:05:42]
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
Tags:MAKEMakerONEMONmakerdao怎么讀makerdao是什么幣ONEWINGMonster Byte
2022的行業洗牌勢必會給2023的加密帶來更新的轉變,其中比較受關注的一大「轉變」就是DeFi再度沖進人們視野中.
1900/1/1 0:00:00MarsBitCryptoDaily2022年12月16日 一、?今日要聞 以太坊域名服務ENS推出官方商店ENSMerchStore以太坊域名服務ENS宣布推出官方商店ENSMerchStor.
1900/1/1 0:00:00參議員沃倫和馬歇爾近期提出的「數字資產反洗錢法案」,是我們迄今為止看到的,對加密貨幣用戶和開發者個人自由和隱私的最直接攻擊.
1900/1/1 0:00:00在這篇文章中,我們討論了去中心化自治組織的估值框架。盡管我們是基于公司金融的概念框架,但我們引入了DAO原生估值概念.
1900/1/1 0:00:00引言 目前,越南是亞洲國家中GDP經濟增長最快的國家,同時越南有望成為東南亞區塊鏈中心。快速增長的經濟以及政府對于新興領域初創企業的政策支持著該國成為新加坡之后的另一個東南亞區塊鏈生態系統中心.
1900/1/1 0:00:0012月27日,NanoLabs創始人孔劍平確認出席將于1月9-10日舉行的POW’ER?2023香港Web3創新者峰會并參與相關議題的討論.
1900/1/1 0:00:00