Warroom ETHCC 2023
Task 1 - Proxy capture 15 points
題目:
知識點:
- 合約未初始化
- 可更新合約 upgradeable contract
解題:
- 要先初始化拿到 owner
- 把自己加入白名單
- 提出合約上的 balance
- 更新合約到新合約, 其他人就無法初始化
POC
Task 2 - Flash loan 25 points
題目:
知識點:
解題:
- 只要totalLoan大於10k 就可以removeLoan.
- 透過aave flashloan 會自己還款, 不需要另外寫 transfer
POC
Task 3 - Signature malleability 30 points
題目:
知識點:
解題:
- 透過 flip s技巧產生不同signature 但會得到相同 signer.
- 修補: 使用 openzeppelin's library to prevent malleability attacks and recover to zero issues 和加上 nonce
POC
Task 4 - Access Control 35 points
題目:
解題:
- 這個任務包含兩個合約,RewardsBox和AccessControl。AccessControl是一個特殊的存取控制器,並且提供了添加所有者的方式。預設的所有者是vitalik.eth和一個隨機生成的地址。即使是部署者也無法添加新的所有者。RewardsBox非常簡單,並且有一個claim(address accessController, uint256 amount)函數,該函數會檢查所提供的accessController,以查看msg.sender是否被授權,如果是,則處理amount的獎勵代幣。
- RewardsBox通過檢查您所提供控制器的代碼哈希與RewardsBox初始化時內置的代碼哈希是否相符,來強制要求您提供正確的AccessControl合約作為控制器。
- 這裡的問題在於,在以太坊虛擬機(EVM)中部署合約時,可以在構造函數中執行任意程式碼,而該程式碼後來不會反映在已部署的合約程式碼中。因此,攻擊者可以部署一個新的合約,在構造函數中將自己添加到擁有者映射(mapping)中,然後將部署的程式碼設置為正確的 AccessControl 合約
要透過accessController這個檢查, 因為沒有限制來源所以可以自己建立一個accessController.
用一樣的code部署但是要把ownerr加上自己.
POC
題目:
解題:
POC