Skip to content

iampkuhz/ethernaut-cn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ethernaut-cn

level 标题 考察点
level0 HelloEthernaut 了解如何用浏览器控制台在ethernaut中交互
level1 Fallback 了解fallback/receive函数, 提供ethernaut命令行和remix两种解决方法
level2 Fallout 了解constructor构造函数
level3 Coinflip 了解合约的可预测性,调用前模拟调用结果
level4 Telephone 了解tx.origin和tx.sender差别
level5 Token 老版本solidity中uint溢出漏洞
level6 Delegation 学习如何使用delegatecall
level7 Force 了解selfdestruct用法
level8 Vault 理解solidity中不存在真正private的变量,掌握读取storage内容的方法
level9 King 了解receive函数的触发和执行特点
level10 Reentrancy 了解重入漏洞和对应防护方式
level11 Elevator 合约函数如何实现同样入参在不同的调用点返回不同的值
level12 Privacy 合约storage存储规则入门
level13 GatekeeperOne 变量转换逻辑和跨合约调用的gas限制
level14 GatekeeperTwo contructor函数中调用外部合约的特殊逻辑
level15 NaughtCoin ERC-20常见接口的使用方式
level16 Preservation delegatecall的使用方法,多次调用达到攻击目标
level17 Recovery CREATE操作码创建合约时的合约地址生成规则
level18 MagicNumber 合约编译生成的字节码规范,字节码与操作码的关系,字节码执行逻辑

环境配置

  1. 有些涉及调试过程和测试代码,我使用的 vscode + foundry 开发测试。为了对 foundry 的工程有更好的适配,建议 vscode 做如下配置
{
    ...
    "solidity.remappings": [
        "forge-std/=lib/forge-std/src/",
        "@openzeppelin/=lib/openzeppelin-contracts/"
    ],
    "solidity.packageDefaultDependenciesContractsDirectory": "lib",
    "solidity.packageDefaultDependenciesDirectory": "src",
    "[solidity]": {
        "editor.defaultFormatter": "JuanBlanco.solidity"
    },
    "solidity.formatter": "forge"
    ...
}
  1. 安装foundry 依赖:
forge install OpenZeppelin/openzeppelin-contracts --no-commit

About

ethernaut 学习笔记,记录解题思路和排查方法

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published