10分钟智能合约:进阶实战-5.1 实战热身-Ethernaut

42 阅读2分钟

欢迎订阅专栏10分钟智能合约:进阶实战

Ethernaut

Ethernaut是一个由智能合约安全领域的知名公司 OpenZeppelin 开发和维护的 Web3/Solidity 安全学习平台。它的核心价值在于提供了一个安全、免费且实战性极强的环境,让开发者能以“黑客”的视角亲手寻找并利用各类智能合约漏洞。

Ethernaut

它是一个社区驱动的“夺旗”(Capture The Flag, CTF)战争游戏。玩家需要“黑掉”一个存在漏洞的智能合约才能过关,从而在实战中学习并理解各种安全漏洞。

Ethernaut 切换语言

🎮 Ethernaut 是如何运作的?

  • 核心玩法:完成上一关获取下个关卡的合约地址进行闯关,通过在线 IDE(如 Remix)或浏览器控制台编写攻击代码。
  • 主要目标:获得特定合约的所有权,或将其资产余额降至零。
  • 知识技能:涵盖 Solidity 语言、EVM 原理及重入、整数溢出等各类经典漏洞。

📚 常见漏洞类型有哪些?

你将在 Ethernaut 中遇到多种经典的智能合约漏洞,通过挑战来逐一攻破:

  • 重入攻击 (Reentrancy Attack):利用 call 函数调用外部合约时,在对方逻辑执行完前反复调用原函数进行资产窃取。
  • 访问控制缺陷 (Access Control Vulnerabilities):旧版 Solidity 构造函数命名错误、或错误区分 tx.originmsg.sender 导致权限被夺取。
  • 算术问题 (Arithmetic Issues):无 SafeMath 库的老版本中可能出现整数溢出;也涉及链上弱随机数源被预测的攻击。
  • EVM/EIP 特性利用 (EVM/EIP Specific Exploits):包括滥用 delegatecall、利用 selfdestruct或操纵存储布局来突破限制。

🚀 如何开始学习?

image.png

  1. 准备环境:安装浏览器插件钱包(如 MetaMask),切换到 Sepolia 等测试网,并获取测试代币。
  2. 进入游戏:访问 Ethernaut 官网 (ethernaut.openzeppelin.com) 开始第一关“Hello Ethernaut”。
  3. 上手实战:分析提供的合约源码,在浏览器控制台 (F12) 编写 web3.js 代码进行攻击。
  4. 寻求帮助:建议先独立思考,实在过不去时再参考社区题解(Writeups),常见的解题框架有 FoundryHardhat

Ethernaut 提供了一个绝佳的学习环境。建议你耐下心来,亲自去部署合约、编写攻击脚本,体会“攻防”的乐趣。