Tyojong
[The Ethernaut] Token 본문
문제 설명

코드 설명


호출한 사용자의 잔액에서 _.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 |
