破解以太坊 EVM 谜题10

破解以太坊 EVM 谜题10

通过以太坊 EVM 谜题深入学习 EVM,了解 EVM 可以帮助我们写出更高效的代码。

学习Solidity 的同学,欢迎订阅我的另一个专栏Ethernaut 题库闯关, 了解常用的 Hacker 方法,可以帮助我们写出更安全的代码。

articles-2022-10-neKkkmze6341450631c18.jpg

EVM 谜题10

00      38          CODESIZE
01      34          CALLVALUE
02      90          SWAP1
03      11          GT
04      6008        PUSH1 08
06      57          JUMPI
07      FD          REVERT
08      5B          JUMPDEST
09      36          CALLDATASIZE
0A      610003      PUSH2 0003
0D      90          SWAP1
0E      06          MOD
0F      15          ISZERO
10      34          CALLVALUE
11      600A        PUSH1 0A
13      01          ADD
14      57          JUMPI
15      FD          REVERT
16      FD          REVERT
17      FD          REVERT
18      FD          REVERT
19      5B          JUMPDEST
1A      00          STOP

? Enter the value to send: (0)
? Enter the calldata: 

以上是 EVM 谜题 10 的操作码,这个谜题很类似上一个谜题, 要求我们输入正确的发送 ETH 数量及calldata 数据。

我们了解大部分操作码的作用,及如何解决谜题。

让我们看看有哪些新的操作码被引入:

  • GT: 从堆栈中弹出2个值,并将value0 > value1的结果推到堆栈中。如果结果是true,则推送1,否则推送0
  • MOD: 从堆栈中取出2个值,并将value0 % value1的结果推回堆栈。注意,分母(value1)是0,结果将是0
  • ISZERO: 从堆栈中弹出一个值,并将value0 ===0 的结果推到堆栈中。

第 1 部分: 检查calldata大小和调用 Value


00      38          CODESIZE
01      34          CALLVALUE
02      90          SWAP1
03      11          GT
04...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Ethernaut CTF
Ethernaut CTF
信奉 CODE IS LAW.