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闯关录中的关卡类型包括解锁合约、修改变量、重放攻击等,每个关卡都有不同的目标和挑战,需要运用不同的技术和策略来完成。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/626603.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复