Tyojong

[The Ethernaut] Token 본문

web3/The Ethernaut

[The Ethernaut] Token

Tyojong 2026. 1. 26. 19:15

문제 설명


코드 설명

호출한 사용자의 잔액에서 _.value 만큼 _to에게 토큰을 전송한다.

보내는 토큰은 잔액보다 많지 않아야 하고 _value값 만큼 사용자의 잔액에서 차감되며 _to의 잔액이 증가한다.


익스플로잇

solidity 0.6 버전에서는 언더플로우체크가 존재하지 않는다.

balances[msg.sender] (사용자의 잔액) 보다 _value값이 크면 뺄셈 이후 음수가 되어야 하지만 uint의 경우 음수가 불가능하므로 언더플로우가 발생하게 된다.

 

사용자의 잔액이 20토큰으로 주어졌기 때문에 20보다 큰 값을 _value인자로 전달하면 된다.

 

문제 컨트랙트 transfer함수에 아무 주소와 21을 인자로 주면 문제가 해결된다.

 

'web3 > The Ethernaut' 카테고리의 다른 글

[The Ethernaut] Force  (0) 2026.01.28
[The Ethernaut] Delegation  (0) 2026.01.27
[The Ethernaut] Coin Flip  (0) 2026.01.26
[The Ethernaut] Telephone  (0) 2026.01.07
[The Ethernaut] Fallout  (2) 2026.01.02