新聞中心
【Ethernaut闖關(guān)錄(下)】

1、第一關(guān):解鎖合約
目標(biāo):解鎖合約并獲得flag
步驟:
1. 點(diǎn)擊合約,選擇"Deploy"。
2. 在彈出的窗口中,輸入合約名稱和部署者地址。
3. 點(diǎn)擊"Deploy"按鈕,合約將被部署到區(qū)塊鏈上。
4. 點(diǎn)擊合約,選擇"Attack"。
5. 在彈出的窗口中,輸入攻擊者的地址和攻擊函數(shù)。
6. 點(diǎn)擊"Attack"按鈕,攻擊函數(shù)將被執(zhí)行。
7. 成功解鎖合約后,獲得flag。
2、第二關(guān):修改變量
目標(biāo):修改變量的值并獲取flag
*注意:本關(guān)需要使用Solidity語(yǔ)言編寫智能合約*
步驟:
1. 點(diǎn)擊合約,選擇"Write contract"。
2. 在彈出的窗口中,編寫一個(gè)Solidity智能合約。
3. 合約需要包含以下內(nèi)容:
定義一個(gè)變量uint public value;。
創(chuàng)建一個(gè)函數(shù)function setValue(uint newValue) public {value = newValue;}用于修改變量的值。
創(chuàng)建一個(gè)函數(shù)function getFlag() public view returns (string memory) {return "flag";}用于返回flag。
4. 點(diǎn)擊"Deploy"按鈕,合約將被部署到區(qū)塊鏈上。
5. 點(diǎn)擊合約,選擇"Attack"。
6. 在彈出的窗口中,輸入攻擊者的地址和攻擊函數(shù)。
7. 攻擊函數(shù)需要調(diào)用setValue(10)來(lái)修改變量的值。
8. 成功修改變量的值后,調(diào)用getFlag()獲取flag。
3、第三關(guān):重放攻擊
目標(biāo):通過(guò)重放攻擊獲取flag
步驟:
1. 點(diǎn)擊合約,選擇"Read contract"。
2. 在彈出的窗口中,查看合約的ABI編碼。
3. 將ABI編碼復(fù)制到一個(gè)新的智能合約中。
4. 在新智能合約中,添加一個(gè)構(gòu)造函數(shù),接收參數(shù)address payable attackerAddress。
5. 在新智能合約中,添加一個(gè)函數(shù)function replayAttack(address payable attackerAddress) public payable {...}用于重放攻擊。
6. 在重放攻擊函數(shù)中,使用attackerAddress.send(amount)向攻擊者發(fā)送資金。
7. 點(diǎn)擊"Deploy"按鈕,新智能合約將被部署到區(qū)塊鏈上。
8. 點(diǎn)擊合約,選擇"Attack"。
9. 在彈出的窗口中,輸入攻擊者的地址和攻擊函數(shù)。
10. 攻擊函數(shù)需要調(diào)用replayAttack(attackerAddress)來(lái)執(zhí)行重放攻擊。
11. 成功執(zhí)行重放攻擊后,攻擊者將收到資金,并獲得flag。
相關(guān)問(wèn)題與解答:
1、Q: Ethernaut闖關(guān)錄是什么?
A: Ethernaut闖關(guān)錄是一個(gè)基于以太坊智能合約的攻擊演練平臺(tái),通過(guò)解決各種關(guān)卡的挑戰(zhàn)來(lái)學(xué)習(xí)和應(yīng)用Solidity智能合約的安全性知識(shí)。
2、Q: Ethernaut闖關(guān)錄中的關(guān)卡有哪些類型?
A: Ethernaut闖關(guān)錄中的關(guān)卡類型包括解鎖合約、修改變量、重放攻擊等,每個(gè)關(guān)卡都有不同的目標(biāo)和挑戰(zhàn),需要運(yùn)用不同的技術(shù)和策略來(lái)完成。
新聞標(biāo)題:Ethernaut闖關(guān)錄(下))
網(wǎng)頁(yè)地址:http://fisionsoft.com.cn/article/djoihdp.html


咨詢
建站咨詢
