Capture the ether-Guess the number
pragma solidity ^0.4.21;
contract GuessTheNumberChallenge {
uint8 answer = 42;
function GuessTheNumberChallenge() public payable {
require(msg.value == 1 ether);
}
function isComplete() public view returns (bool) {
return address(this).balance == 0;
}
function guess(uint8 n) public payable {
require(msg.value == 1 ether);
if (n == answer) {
msg.sender.transfer(2 ether);
}
}
}guess를 호출하여 숫자를 맞추어 balance를 0으로 만들라.
풀이
uint8 answer = 42; 로 answer가 코드에 나타나 있다. 코드가 공개되어 있으며, 설령 등록되지 않았더라도 바이트 코드를 리버싱하여 값을 얻을 수 있다.
파라미터를 42로 넣으면 풀린다.
tags: writeup, blockchain, solidity, smart contract