# Ryan 第八週作業 ## [Ethernaut](https://ethernaut.openzeppelin.com/) 挑選一題 Token ![](https://i.imgur.com/qiarMN2.png) 題目講解 ![](https://i.imgur.com/NMaR2Pw.png) 先取得實例地址 Get new instance console 輸入 instance 可以得到實例地址 ![](https://i.imgur.com/4qSZgY4.png) 實例地址 : 0x66266994dB0B60D0cEcEa0dE26cB794F58a9562C ### 檢查漏洞 由於balances[msg.sender]跟_value的型態都是uint uint代表了unsigned integers,即無負數整數 所以balances[msg.sender] – _value永遠不會少於零 當轉21的時候會發生溢位,導致數值變大,數值為2^256 - 1 ### 開始實作 console 輸入 player 查詢玩家地址 ![](https://i.imgur.com/Li1jUjY.png) console 輸入 await contract.balanceOf(player) 查詢目前餘額 有20個代幣 ![](https://i.imgur.com/fm4TPaI.png) console 輸入 level 查詢level地址 ![](https://i.imgur.com/9G0SMp2.png) console 輸入 await contract.transfer(level, 21) 轉21個代幣給level地址 ![](https://i.imgur.com/6EDaTIY.png) console 輸入 輸入 await contract.balanceOf(player) 查詢目前餘額 發現餘額數量非常多 ![](https://i.imgur.com/ewYEA0n.png) 點擊 Submit instance 送出 完成會出現以下訊息 ![](https://i.imgur.com/PKX6Ktx.png) ###### tags: `Solidity 工程師實戰營第 5 期`