timezone |
---|
Asia/Taipei |
- 自我介绍 Ching367436, 竹狐 CTF 戰隊創辦人。曾學過一些 web2,主要著重於白箱測試。剛接觸 web3,希望能透過這個活動來增強自己於 web3 的實力。
- 你认为你会完成本次残酷学习吗? 可以
Damn Vulnerable DeFi - The Rewarder
邏輯漏洞,可透過重複領取獎勵,將合約中的 DVT, WETH 轉移至指定的 recovery address。
Damn Vulnerable DeFi - Selfie
透過 flash loan 取得 DVT 後即可取得 DVT voting power,再透過 voting power 控制 SimpleGovernance
合約呼叫 SelfiePool.emergencyExit
,將合約中的 DVT 拿走。
Damn Vulnerable DeFi - Unstoppable
透過改變 Unstoppable
合約狀態,讓其無法正常 flash loan。
Damn Vulnerable DeFi - Compromised
利用外洩的 private keys 來控制 oracle,將 exchange 的 Ethers 偷走。
Damn Vulnerable DeFi - Naive Receiver
- Flash loan 接收合約沒做好限制,造成任何人都可以這個合約的身分進行 flash loan。
- Flash loan pool 使用了 ERC2771 + Multicall,可偽造 message sender 進行 withdraw。
Damn Vulnerable DeFi - Puppet
Lending pool 使用了 Uniswap v1 作為 oracle 來計算借錢所需 collateral 的量,可透過賣 DVT 給 Uniswap 來影響,使得借款時需要的抵押金為 0。
Damn Vulnerable DeFi - Puppet V2
Lending pool 使用了 Uniswap v2 作為 oracle 來計算借錢所需 collateral 的量,可透過賣 DVT 給 Uniswap 來影響,使得借款時需要的抵押金變小。
Damn Vulnerable DeFi - Truster
TrusterLenderPool.flashLoan
可用於呼叫任意其他合約函數。可以呼叫 DamnValuableToken.approve
來 approve 自己,再用 DamnValuableToken.transferFrom
來取得其 DVT。
Damn Vulnerable DeFi - Free Rider
FreeRiderNFTMarketplace.buyMany
的沒有驗證是否支付了 NTFs 總價FreeRiderNFTMarketplace._buyOne
最後將 NFT 價錢支付給了買家,而不是原本的擁有者- Player 一開始沒有足夠的 ETH 進行攻擊,但可以使用
UniswapV2
提供的 flash swap 來借到足夠的 ETH
Damn Vulnerable DeFi - Side Entrance
Damn Vulnerable DeFi - Backdoor
Damn Vulnerable DeFi - Climber
Damn Vulnerable DeFi - ABI Smuggling
Damn Vulnerable DeFi - Shards
Damn Vulnerable DeFi - Withdrawal
今天在打 神盾盃—資安競賽,拿了第二(第 一、二 名皆是竹狐戰隊成員)。
打完後今天還有一點時間,來看 Damn Vulnerable DeFi - PuppetV3。
目前把 UniswapV3Pool.swap
的使用方法看好、IUniswapV3SwapCallback
寫好,明天把這題剩下的部分看完。
應該之後會找時間把整個 UniswapV3 看過。
Damn Vulnerable DeFi - Puppet V3
還在處理 Damn Vulnerable DeFi - Wallet Mining 的如何計算 USER_DEPOSIT_ADDRESS
的 salt 部分 (Reference),明天繼續。
The destination address is calculated as follows:
initialisation_code = memory[offset:offset+size] address = keccak256(0xff + sender_address + salt + keccak256(initialisation_code))[12:]
Damn Vulnerable DeFi - Wallet Mining 的簽名部分還在 debug,其他部分好了。 Write-up
昨天遇到簽名不對的問題是因為 domain separater 裏面含有該合約的地址,我原本是直接拿 singletonCopy.getTransactionHash
,但 address(singletonCopy) != USER_DEPOSIT_ADDRESS
。
今天第一次知道原來 ecrecover
檢查到錯的 hash 的時候會回傳其他的地址。改天來研究一下。
Damn Vulnerable DeFi - Wallet Mining
今天看了一下 Damn Vulnerable DeFi - Curvy Puppet 的 setup script,去了解了一下 Permit2 的 AllowanceTransfer 跟 SignatureTransfer 的運作原理。
- BlazCTF 2024
來打我人生第一場的 web3 CTF 🎉🎉。