【Ethernaut闖關(guān)錄(下)】
1、關(guān)錄第一關(guān):解鎖合約
目標:解鎖合約(???)并獲得flag
步驟:
1. 點(diǎn)擊合約,關(guān)錄選擇"Deploy"。關(guān)錄
2. 在彈出的關(guān)錄窗口中,輸入合約名稱(chēng)和部署者地址。關(guān)錄
3. 點(diǎn)擊"Deploy"按鈕,關(guān)錄合約將被部署到區塊鏈上。關(guān)錄
4. 點(diǎn)擊合約,關(guān)錄選擇"Attack"。關(guān)錄
5. 在彈出的關(guān)錄窗口中,輸入攻擊??者的關(guān)錄??地址和攻擊函數。
6. 點(diǎn)擊"At??tack"按鈕,攻擊函數將被執行。
7. 成功解鎖合約后,獲得flag(???)。
2、第二關(guān):修改變量
目標:修改變量的值并獲取flag
*注意:本關(guān)需要使用Solidity語(yǔ)言編寫(xiě)智能合約(yue)
*步驟:(??-)?
1. 點(diǎn)擊合約,選擇"Write contract"。
2. 在彈出的窗口中,編寫(xiě)一個(gè)Solidity智能合約。
3. 合約需要包含(′?ω?`)以??下內容:
定義一個(gè)變量uint public value;。
創(chuàng )建一個(gè)函數function setValue(uint newValue) public { value = newValue;}用于修改變量的值。
創(chuàng )建一個(gè)函數function getFlag() public view returns (string memory) { return "flag"??;;}用于返回fl(′?`)ag。
4. 點(diǎn)擊"Deploy"按鈕,合約將被???部署到區塊鏈上。
5. 點(diǎn)擊合約,選擇"Attack"。
6. 在彈出的窗口中,輸入攻擊者的地址和攻擊函數。
7. 攻擊函數需要(yao)調用setValue(10)來(lái)修??改變量的值。
8. 成功修改變量的值后,調用getFlag()獲取flag。
3、第三關(guān):重放攻擊
目標:通過(guò)重放攻擊獲取flag
步驟:
1. 點(diǎn)擊合約,選擇"Read contract"。
2. 在彈出的窗口中,查看(′ω`*)合約的ABI編碼。
3. 將AB(??ヮ?)?*:???I編碼復制到一個(gè)新的智能合??約中。
4. 在新智能合約中,添加一個(gè)構造函數,接收參數address payable attackerAddress。
5. 在新智能合約中,添加一個(gè)??函數function replayAttack(address payable attackerAddress) public payable { ...}用于重放攻擊。
6. 在重放攻擊函數中,使用att(′ω`)ackerAddress.send(amount)向攻擊者發(fā)送資金。
7. 點(diǎn)擊"Deploy"按鈕,新智能合約將被部署到區塊鏈上。
8. 點(diǎn)擊合約,選擇"Att(′?_?`)ack"。
10. 攻擊函數需(xu)要調用replayAttack(°o°)(attackerAddress)來(lái)執行重放攻擊。
相關(guān)問(wèn)題與解答:
1、Q: Ethern??aut闖關(guān)錄是什么?
A: Ethernaut闖關(guān)錄是一個(gè)基于以太坊智能合約的攻擊演練平臺,通過(guò)解決各種關(guān)卡的挑戰來(lái)學(xué)習和應用Solidity智能合約的安全ヽ(′▽?zhuān)?ノ性知識。
A: Ethernaut闖關(guān)錄中的關(guān)卡類(lèi)型包括解鎖合約、(?????)修改變量、重放攻擊等(deng),每個(gè)關(guān)卡都有不同的目標和挑戰,需要運(′▽?zhuān)?用不同的技術(shù)和策略來(lái)完成。
電話(huà):18158351738
網(wǎng) 址:http://www.hunqingrc.com/
地 址:北京市平谷區66號