当前位置:首页 > 行业动态 > 正文

Ethernaut闯关录(下))

在Ethernaut闯关录(下)中,玩家需要运用智能合约知识,解决各种加密难题,最终获得胜利。

Ethernaut闯关录(下)

1、第一关:解锁合约

目标:解锁合约并获得flag

步骤:

1. 点击合约,选择"Deploy"。

2. 在弹出的窗口中,输入合约名称和部署者地址。

3. 点击"Deploy"按钮,合约将被部署到区块链上。

4. 点击合约,选择"Attack"。

5. 在弹出的窗口中,输入攻击者的地址和攻击函数。

6. 点击"Attack"按钮,攻击函数将被执行。

7. 成功解锁合约后,获得flag。

2、第二关:修改变量

目标:修改变量的值并获取flag

*注意:本关需要使用Solidity语言编写智能合约*

步骤:

1. 点击合约,选择"Write contract"。

2. 在弹出的窗口中,编写一个Solidity智能合约。

3. 合约需要包含以下内容:

定义一个变量uint public value;

创建一个函数function setValue(uint newValue) public {value = newValue;}用于修改变量的值。

创建一个函数function getFlag() public view returns (string memory) {return "flag";}用于返回flag。

4. 点击"Deploy"按钮,合约将被部署到区块链上。

5. 点击合约,选择"Attack"。

6. 在弹出的窗口中,输入攻击者的地址和攻击函数。

7. 攻击函数需要调用setValue(10)来修改变量的值。

8. 成功修改变量的值后,调用getFlag()获取flag。

3、第三关:重放攻击

目标:通过重放攻击获取flag

步骤:

1. 点击合约,选择"Read contract"。

2. 在弹出的窗口中,查看合约的ABI编码。

3. 将ABI编码复制到一个新的智能合约中。

4. 在新智能合约中,添加一个构造函数,接收参数address payable attackerAddress

5. 在新智能合约中,添加一个函数function replayAttack(address payable attackerAddress) public payable {...}用于重放攻击。

6. 在重放攻击函数中,使用attackerAddress.send(amount)向攻击者发送资金。

7. 点击"Deploy"按钮,新智能合约将被部署到区块链上。

8. 点击合约,选择"Attack"。

9. 在弹出的窗口中,输入攻击者的地址和攻击函数。

10. 攻击函数需要调用replayAttack(attackerAddress)来执行重放攻击。

11. 成功执行重放攻击后,攻击者将收到资金,并获得flag。

相关问题与解答:

1、Q: Ethernaut闯关录是什么?

A: Ethernaut闯关录是一个基于以太坊智能合约的攻击演练平台,通过解决各种关卡的挑战来学习和应用Solidity智能合约的安全性知识。

2、Q: Ethernaut闯关录中的关卡有哪些类型?

A: Ethernaut闯关录中的关卡类型包括解锁合约、修改变量、重放攻击等,每个关卡都有不同的目标和挑战,需要运用不同的技术和策略来完成。

0