这是我的 Ethernaut 靶场个人学习笔记,用来记录每一关的题目目标、漏洞原理、利用过程和复盘要点,方便后续按关卡重新练习和查漏补缺。
关卡:Level 4 - Telephone
本关目标利用 tx.origin 与 msg.sender 的差异接管 Telephone owner。
考察知识点
tx.origin 与 msg.sender 区别
中间合约绕过
钓鱼式授权风险
题目源码1234567891011121314151617// SPDX-License-Identifier: MI...
这是我的 Ethernaut 靶场个人学习笔记,用来记录每一关的题目目标、漏洞原理、利用过程和复盘要点,方便后续按关卡重新练习和查漏补缺。
关卡:Level 3 - Coin Flip
本关目标连续猜中 10 次 CoinFlip 的结果。
考察知识点
伪随机数可预测
区块哈希读取
同交易复现目标计算
题目源码123456789101112131415161718192021222324252627282930313233// SPDX-License-Identifier: MITpragma s...
这是我的 Ethernaut 靶场个人学习笔记,用来记录每一关的题目目标、漏洞原理、利用过程和复盘要点,方便后续按关卡重新练习和查漏补缺。
关卡:Level 2 - Fallout
本关目标利用构造函数拼写错误,获得 Fallout 合约 owner。
考察知识点
构造函数历史写法
函数名拼写错误
public 初始化函数风险
题目源码12345678910111213141516171819202122232425262728293031323334353637383940414243// SPD...
这是我的 Ethernaut 靶场个人学习笔记,用来记录每一关的题目目标、漏洞原理、利用过程和复盘要点,方便后续按关卡重新练习和查漏补缺。
关卡:Level 1 - Fallback
本关目标成为 Fallback 合约 owner,并调用 withdraw() 把实例余额清空。
考察知识点
fallback/receive 入口
低金额 contribute 铺垫权限条件
owner 接管后提款
题目源码123456789101112131415161718192021222324252...
这是我的 Ethernaut 靶场个人学习笔记,用来记录每一关的题目目标、漏洞原理、利用过程和复盘要点,方便后续按关卡重新练习和查漏补缺。
关卡:Level 0 - Hello Ethernaut
本关目标熟悉 Ethernaut 的基本操作:连接钱包、创建实例、在浏览器控制台调用合约、提交实例。
考察知识点
Ethernaut 实例生命周期
浏览器控制台与异步合约调用
公开变量 getter
题目源码1234567891011121314151617181920212223242526272829...
对应代码文件:src/bin/16_async_await.rs
运行命令:
1cargo run --bin lesson16_async_await
学习目标异步编程用于在等待 IO、网络或定时器时不阻塞整个线程。Rust 使用 Future、async 和 .await 表达异步任务。
本节示例保持无外部依赖,重点解释机制。真实项目通常会使用 Tokio 或 async-std 这样的异步运行时。
理解 async fn 返回 Future。
知道 .await 表示等待异步结果。
理解 Futur...
对应代码文件:src/bin/15_std_functions_macros.rs
运行命令:
1cargo run --bin lesson15_std_functions_macros
学习目标本节整理日常 Rust 编程中常见的标准库函数、方法和宏。它们能显著提高代码表达力。
宏看起来像函数,但以 ! 结尾,并在编译期展开。常见宏包括 println!、format!、vec!、dbg!。
理解函数、方法和宏的基本区别。
掌握格式化输出、调试输出和集合创建。
会使用 Option、Result 的常...