固定性解码构造函数

发布于 2025-01-23 06:59:41 字数 614 浏览 0 评论 0 原文

我玩Ethernaut 8级。目标是访问专用密码状态变量并解锁合同。

我知道一个人可以使用等待合同。 在这里是合同。

我尝试了等待合同。

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract Vault {
  bool public locked;
  bytes32 private password;

  constructor(bytes32 _password) public {
    locked = true;
    password = _password;
  }

  function unlock(bytes32 _password) public {
    if (password == _password) {
      locked = false;
    }
  }
}

I playing Ethernaut Level 8. The goal is to get access to the private password state variable and unlock the contract.

I know one could use await contract.unlock(await web3.eth.getStorageAt(contract.address, 1));, but I want to find the password decoding the input data of the contract creation. Here is the contract.

I tried await contract.unlock("f94b476063b6379a3c8b6c836efb8b3e10ede188") but that didn't work.

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

contract Vault {
  bool public locked;
  bytes32 private password;

  constructor(bytes32 _password) public {
    locked = true;
    password = _password;
  }

  function unlock(bytes32 _password) public {
    if (password == _password) {
      locked = false;
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

转角预定愛 2025-01-30 06:59:41

如果验证了合同,则可以转到合同创建代码中,并读取最后32个字节(字节码的64个字符),在这种情况下为 0x4120766572792792074726F672072073656565657265742657420706170617373776F772642642642642629

是32个字节,因为密码状态变量是这样声明的:

bytes32专用密码;

求解挑战类型:

await contract.unlock("0x412076657279207374726f6e67207365637265742070617373776f7264203a29")

If the contract is verified, it is possible to go to the contract section, scroll down to Contract Creation Code and read the last 32 bytes (64 characters of the bytecode) which in this case is 0x412076657279207374726f6e67207365637265742070617373776f7264203a29.

it is 32 bytes because the password state variable is declared like this:

bytes32 private password;

To solve the challenge type:

await contract.unlock("0x412076657279207374726f6e67207365637265742070617373776f7264203a29")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文