本文作者:Ethernaut CTF[1]
前段时间翻译了 Ethernaut 题库闯关系列文章[2],发布为了专栏, 效果还不错,自己也有很大提高。
今天准备新开一个专栏,探索一下 EVM, 这是一个 EVM 谜题系列,EVM 谜题[3]是一个由 Franco Victorio (@fvictorio_nan[4])开发的项目,如果你正想学习以太坊 EVM 的工作原理,那么这个项目就非常合适。
EVM 谜题一共包含 10 道谜题,每个谜题都包括向一个合约发送一个成功的交易。谜题提供了合约的字节码,需要我们填入交易数据,并且要确保这些数据将不会使交易回退。
如果你不熟悉以太坊 EVM,我建议你从EVM 学习手册[5]开始学习,手册里它包含了大量关于 EVM 的视频和文章,可能读起来不轻松,但它们真的是很好材料。
如何开始
代码语言:javascript复制git clone https://github.com/fvictorio/evm-puzzles.git
cd evm-puzzles
npm install
npx hardhat play
每个挑战要解决的 "谜题 "是理解哪一个是正确的值,calldata 或两者,你必须将其发送到合约,以便交易不被回退。
所有的 Opcode 都是逐一执行的,它们将与堆栈、内存或存储进行交互。
在破解的时候,可能需要一些有用的工具来帮助你可视化和调试这些操作代码。下面是我正在使用的一些工具:
- EVM 代码交互式文档[6]
- 以太坊虚拟机 Opcodes[7]
- 以太坊 Remix[8]
谜题破解
一共有 10 道谜题,在这 10 道谜题,我们将同样跟随Stremi[9] 进行破解,在每篇文章中,会解释将要使用的每一个新操作码,以及破解步骤。
- 破解 EVM 谜题 1[10]
- 破解 EVM 谜题 2[11]
- 破解 EVM 谜题 3[12]
- 破解 EVM 谜题 4[13]
- 破解 EVM 谜题 5[14]
- 破解 EVM 谜题 6[15]
- 破解 EVM 谜题 7[16]
- 破解 EVM 谜题 8[17]
- 破解 EVM 谜题 9[18]
- 破解 EVM 谜题 10[19]
相信通过 10 篇文章,我们将对 EVM 有更深入的了解。
参考资料
[1]
Ethernaut CTF: https://learnblockchain.cn/people/11048
[2]
Ethernaut 题库闯关系列文章: https://learnblockchain.cn/column/19
[3]
EVM 谜题: https://github.com/fvictorio/evm-puzzles
[4]
@fvictorio_nan: https://twitter.com/fvictorio_nan
[5]
EVM 学习手册: https://learnblockchain.cn/article/4800
[6]
EVM代码交互式文档: https://www.evm.codes/
[7]
以太坊虚拟机 Opcodes: https://www.ethervm.io/
[8]
以太坊 Remix: https://remix.ethereum.org/
[9]
Stremi: https://stermi.xyz/
[10]
破解 EVM谜题1: https://stermi.xyz/blog/evm-puzzle-1-solution
[11]
破解 EVM谜题2: https://stermi.xyz/blog/evm-puzzle-2-solution
[12]
破解 EVM谜题3: https://stermi.xyz/blog/evm-puzzle-3-solution
[13]
破解 EVM谜题4: https://stermi.xyz/blog/evm-puzzle-4-solution
[14]
破解 EVM谜题5: https://stermi.xyz/blog/evm-puzzle-5-solution
[15]
破解 EVM谜题6: https://stermi.xyz/blog/evm-puzzle-6-solution
[16]
破解 EVM谜题7: https://stermi.xyz/blog/evm-puzzle-7-solution
[17]
破解 EVM谜题8: https://stermi.xyz/blog/evm-puzzle-8-solution
[18]
破解 EVM谜题9: https://stermi.xyz/blog/evm-puzzle-9-solution
[19]
破解 EVM谜题10: https://stermi.xyz/blog/evm-puzzle-10-solution