专栏开篇:破解以太坊 EVM 谜题

2022-11-07 12:36:37 浏览数 (1)

本文作者: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

0 人点赞