以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > FIL > Info

有趣的智能合約蜜罐分析(上)_INT:VAL

Author:

Time:1900/1/1 0:00:00

智能合約蜜罐概述

研究安全的讀者應該都清楚,蜜罐本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊。蜜罐設計的初衷就是讓黑客來入侵系統,并借此收集證據,也隱藏了真實環境。智能合約中也有蜜罐,但它不同于我們一般聽到的蜜罐。在本文中,知道創宇區塊鏈安全實驗室主要針對智能合約蜜罐進行分析。智能合約蜜罐的作用更像是釣魚,通過引誘攻擊者轉賬到蜜罐合約。相比于普通釣魚行為面對一般用戶,智能合約蜜罐的釣魚行為針對的是智能合約開發者、智能合約代碼審計人員以及黑客,這種釣魚行為明顯門檻更高。接下來我們會對一些智能合約蜜罐的案例做講解,揭露其中的騙局,這些智能合約蜜罐代碼都可以GitHub上找到,這里給出他們的網址:smart-contract-honeySolidlity-Vulnerable根據這些智能合約蜜罐的欺騙手法,可以將它們大致的分類為以下幾種古老的欺騙手段黑客的漏洞利用新穎的賭博游戲黑客的漏洞利用由于篇幅有限,文章分為兩部分進行講解,本文作為上篇,主要對古老的欺騙手段和神奇的邏輯漏洞進行講解和復現,新穎的賭博游戲和黑客的漏洞利用會在下篇中進行講解。古老的欺騙方法

2

require(msg

當我們將合約的代碼放到本地進行自動換行時就可以發現該合約是存在問題的。//contractaddress:0x7a4349a749e59a5736efb7826ee3496a2dfd5489pragmasolidity^0

}functionwithdraw()payablepublic{if(msg

require(msg

債券市場資深人士:拉丁美洲對比特幣的采用是世界上最有趣的地緣發展:債券市場資深人士、南加州大學馬歇爾商學院金融學和經濟學副教授Nik Bhatia發推表示,拉丁美洲對比特幣的采用是世界上最有趣的地緣發展,我全力支持。[2021/6/20 23:50:25]

functionCommand(addressadr,bytesdata)payablepublic{require(msg

}2

else{throw;}}//當區塊塊號大于504027時再判斷調用者是否為合約所有者,如果是則將合約所有余額轉給合約所有者。msg

該蜜罐合約完整的代碼如下:contractTestToken{stringconstantname="TestToken";stringconstantsymbol="TT";uint8constantdecimals=18;uinttotal;boollocked;address_owner;structAllowed{mapping(address=>uint256)_allowed;}mapping(address=>Allowed)allowed;mapping(address=>uint256)balances;eventTransfer(addressindexed_from,addressindexed_to,uint256_value);eventApproval(addressindexed_owner,addressindexed_spender,uint256_value);functionTestToken(){total=0;_owner=msg

The Block創始人:DeFi是當今加密貨幣和數字資產中最有趣的事情:推特網友Trolly McTrollface表示,批評DeFi是沒有意義的,因為每個參與其中的人都知道這只是一堆名字聽起來很滑稽的傳銷騙局,并且這其中每個人都相信自己能成功登上頂峰。The Block創始人Mike Dudas對此反駁稱,這絕對不是真的,不要讓沒錢的人和永恒的懷疑論者使你相信這一點。DeFi是當今加密貨幣和數字資產中最有趣的事情(與CBDC/數字美元相比)。[2020/9/14]

functiontotalSupply()constantreturns(uint256totalSupply){returntotal;}functionbalanceOf(address_owner)constantreturns(uint256balance){returnbalances;}functiondeposit()payablereturns(boolsuccess){if(balances+msg

functionwithdraw(uint256_value)payablereturns(boolsuccess){if(balances<_value)returnfalse;msg

functiontransfer(address_to,uint256_value)returns(boolsuccess){if(balances<_value)returnfalse;if(balances+_value<_value)returnfalse;balances-=_value;balances+=_value;Transfer(msg

YFI創始人:流動性挖礦保險轉售衍生出一些有趣的現象:9月14日午間,YFI項目創始人AndreCronje今日發推提到了加密保險的一些有趣現象:

1,人們在做流動性挖礦時正在大量購買保險;

2,流動性挖礦結束后,保險對他們而言就失效了;

3,Nexus(DeFi保險平臺)表示,用戶可以無風險持有資產,這意味著,如果發生了可索賠事件,保險可以按保險費轉售。這使得市場上出現折扣保險,協議可以在二級市場上以便宜的價格為系統購買廣泛的保險,為可索賠事件創造一個安全網;這是一個好的公益事業,如果用戶不做流動性挖礦了,可以考慮把保險捐贈給社區,這樣社區就能在意外發生時有后備方案。[2020/9/14]

functionapprove(address_spender,uint256_value)returns(boolsuccess){allowed._allowed=_value;Approval(msg

functionallowance(address_owner,address_spender)constantreturns(uint256remaining){returnallowed._allowed;}functiontransferFrom(address_from,address_to,uint256_value)returns(boolsuccess){if(balances<_value)returnfalse;if(allowed._allowed<_value)returnfalse;if(balances+_value<_value)returnfalse;balances-=_value;balances+=_value;allowed._allowed-=_value;returntrue;}functionwithdrawAll()payable{//require(msg

聲音 | 王新喜:將在1-2天內發布一些關于LTC有趣的內容:萊特幣基金會聯合創始人王新喜在推特表示,將在1-2天內發布一些關于LTC的有趣的內容。[2019/9/6]

else{throw;}}msg

}2

bytes32publichashPass;functionSetPass(bytes32hash)payable{if(!passHasBeenSet&&(msg

}functionGetGift(bytespass)returns(bytes32){if(hashPass==sha3(pass)){msg

returnsha3(pass);}functionPassHasBeenSet(bytes32hash){if(hash==hashPass){passHasBeenSet=true;}}}整個合約有三個關鍵的功能函數,分別是setPass()、GetGift()以及PassHasBeenSet()。首先是setPass()函數,代碼如下,其功能為在還未設置密碼且轉賬大于1eth時可以設置密碼hashPass。functionSetPass(bytes32hash)payable{//設置密碼if(!passHasBeenSet&&(msg

functionCommand(addressadr,bytesdata)payablepublic{require(msg

functionmultiplicate(addressadr)publicpayable{if(msg

}}該蜜罐合約有三個關鍵的功能函數,分別是withdraw()、Command()以及multiplicate()。首先是withdraw()函數,代碼如下,其功能為判斷調用者是否為合約所有者,如果是則獲取合約中的所有代幣。functionwithdraw()payablepublic{//提款require(msg

聲音 | Joseph Young:隨著貨幣戰爭加劇 比特幣和黃金迎來了非常有趣的時刻:加密貨幣分析師Joseph Young發布推文評論“英國央行行長呼吁建立全球貨幣體系以取代美元”的消息稱,隨著地緣風險上升,貨幣戰爭加劇,比特幣和黃金迎來了非常有趣的時刻。BTC價格走勢是獨立的,短期趨勢似乎是小幅下降,但如果外匯戰繼續下去,可能會有更多投資者轉而關注其它SoV(價值存儲)選擇。[2019/8/24]

modifieronlyOwner{if(msg

}contractTestBankisOwned{eventBankDeposit(addressfrom,uintamount);eventBankWithdrawal(addressfrom,uintamount);addresspublicowner=msg

functiondeposit()publicpayable{require(msg

functionsetEmergencyCode(uint256code,uint256value)publiconlyOwner{ecode=code;evalue=value;}functionuseEmergencyCode(uint256code)publicpayable{if((code==ecode)&&(msg

functionwithdraw(uintamount)publiconlyOwner{require(amount<=this

}該蜜罐合約的關鍵點在于useEmergencyCode()函數,代碼如下,其功能為判斷code是否等于合約的ecode,傳入的msg

functiontest2(uinta)returns(uint){variable+=a;returnvariable;}}contractBisA{uintvariable=0;functiontest2(uinta)returns(uint){variable++;returnvariable;}}====================contractB{uintvariable1=0;uintvariable2=0;functiontest1(uinta)returns(uintv){variable1++;returnvariable1;}functiontest2(uinta)returns(uintv){variable2++;returnvariable2;}}那么再看懂了上面講解的基礎上我們再回到蜜罐合約本身,Owner和TestBank合約中都有一個owner變量,因此TestBank合約中useEmergencyCode()函數修改的其實只是TestBank合約的所有者,并不會對Owner合約的所有者造成任何影響,而函數修飾器onlyOwner中判斷的合約所有者為Owner合約的所有者,也就是合約創建者,無論攻擊者如何修改TestBank合約中的owner值,最后都不能通過onlyOwner的判斷提款成功。根據上述的分析,我們可以將該蜜罐合約的核心代碼修改為如下內容,這樣大家就能夠一目了然的知道原因了,onlyOwner中判斷的owner和useEmergencyCode()函數中的owner參數并不是一個東西,只是同名而已。contractTestBankisOwned{addresspublicowner1=msg

addresspublicowner2=msg

functionwithdraw(uintamount)publiconlyOwner{require(amount<=this

3.3.2代碼復現將蜜罐合約完整代碼放入到RemixIDE中,選擇0x5B38Da6a701c568545dCfcB03FcB875f56beddC4作為合約創建者,點擊「Deploy」來部署合約,設置msg.value為10eth調用deposit()函數存入10eth到合約中。

在使用該用戶0x5B3調用setEmergencyCode()函數設置ecode和evalue,這里我們將ecode任意設置為「111111」,value設置為「10000000000000000000」也就是10eth。

如果蜜罐合約創建者故意泄露自己設置ecode和evalue的值,并且展示出合約中已經存在以太幣,當攻擊者0xAb8發現了這些問題并被欺騙認為該合約存在問題,將msg.value設置為10eth,并輸入code為「111111」去調用useEmergencyCode()函數,嘗試去將合約所有者地址修改為自己的地址,但該攻擊者只是成為了TestBank合約的所有者,并沒有成為Owner合約的所有者,這就導致了在執行withdraw()函數時函數修飾器onlyOwner會拒絕攻擊者。

攻擊者0xAb8查看owner的值確定自己就是合約的所有者了,之后調用withdraw()函數去提取合約中所有的20eth,會發現調用失敗,這是因為函數修飾器onlyOwner中判斷條件不能通過,導致withdraw()函數也不能正常執行,這樣一來攻擊者0xAb8就被蜜罐合約白白騙取了10eth。

而合約所有者0x5B3則可以去調用withdraw()函數取走合約中的20eth。

4.文獻參考

蜜罐技術_百度百科(baidu.com)以太坊蜜罐智能合約分析(seebug.org)Solidity原理:繼承(Inheritance)Solidity中文手冊

Tags:INTUINVALESScointiger交易所下載QUINTA價格Saiko - The RevivalSUCCESS幣

FIL
「Plan B」已就位,比特幣牛市將繼續_PLA:XPLAY價格

吳說作者|劉全凱本期編輯|ColinWu在6月20日,著名比特幣多頭PlanB基于改良后新的S2F模型預測了2021年可能出現的最壞情況:8月>47k,9月>43k,10月>63k.

1900/1/1 0:00:00
又一款3A鏈游,北歐的元宇宙新秀GalaxyBlitz計劃明年Q1上線_GALAXY:ITZ

GalaxyBlitz是什么?“元宇宙”概念起源于NealStephenson的科幻小說,描述了一個人們以數字身份在多維空間中與各種軟件進行交互的世界.

1900/1/1 0:00:00
ETH周報 | 以太坊預計將在2022年Q2進行合并;以太坊連續4天處于通縮狀態(11.1~11.7)_ETH:ANC

作者|秦曉峰編輯|郝方舟出品|Odaily星球日報 一、整體概述 Coinbase加密工程師yuga發推總結11月6日的以太坊社區電話會議.

1900/1/1 0:00:00
NFT 炒作放緩,DeFi 2.0成加密領域的下一個大趨勢_EFI:NFT4Play

文:AnnInw編譯:Zion責編:karen我說對上個月恒大地產引發的股市回調并不擔心,這是對的。我提到過,用鮑威爾的話來說,通貨膨脹是暫時的.

1900/1/1 0:00:00
巴拿馬加密法案的背后是金融系統的「改革開放」_區塊鏈:加密貨幣

當你聽到“巴拿馬”這個詞時,首先想到的是什么?巴拿馬運河?這是一個歷史悠久且美麗的國家。自1914年開通以來,巴拿馬運河一直為世界實體經濟做出巨大貢獻,但現在,加布里埃爾·席爾瓦(Gabriel.

1900/1/1 0:00:00
ConsenSys三季度報告精華:受NFT帶動,以太坊生態正高速擴展_ONS:CONC價格

近日,以太坊生態孵化器ConsenSys發布《Web3Q32021》報告。報告指出,以太坊龐大的Web3.0生態系統——包括大多數DeFi、穩定幣、NFT和區塊鏈游戲世界——持續擴大并吸引用戶,

1900/1/1 0:00:00
ads