Skip to content

Latest commit

 

History

History
142 lines (111 loc) · 8.36 KB

Ching367436.md

File metadata and controls

142 lines (111 loc) · 8.36 KB
timezone
Asia/Taipei

Ching367436

  1. 自我介绍 Ching367436, 竹狐 CTF 戰隊創辦人。曾學過一些 web2,主要著重於白箱測試。剛接觸 web3,希望能透過這個活動來增強自己於 web3 的實力。
  2. 你认为你会完成本次残酷学习吗? 可以

Notes

2024.08.29

Damn Vulnerable DeFi - The Rewarder

邏輯漏洞,可透過重複領取獎勵,將合約中的 DVT, WETH 轉移至指定的 recovery address。

2024.08.30

Damn Vulnerable DeFi - Selfie

透過 flash loan 取得 DVT 後即可取得 DVT voting power,再透過 voting power 控制 SimpleGovernance 合約呼叫 SelfiePool.emergencyExit,將合約中的 DVT 拿走。

2024.08.31

Damn Vulnerable DeFi - Unstoppable

透過改變 Unstoppable 合約狀態,讓其無法正常 flash loan。

2024.09.01

Damn Vulnerable DeFi - Compromised

利用外洩的 private keys 來控制 oracle,將 exchange 的 Ethers 偷走。

2024.09.02

Damn Vulnerable DeFi - Naive Receiver

  1. Flash loan 接收合約沒做好限制,造成任何人都可以這個合約的身分進行 flash loan。
  2. Flash loan pool 使用了 ERC2771 + Multicall,可偽造 message sender 進行 withdraw。

2024.09.03

Damn Vulnerable DeFi - Puppet

Lending pool 使用了 Uniswap v1 作為 oracle 來計算借錢所需 collateral 的量,可透過賣 DVT 給 Uniswap 來影響,使得借款時需要的抵押金為 0。

2024.09.04

Damn Vulnerable DeFi - Puppet V2

Lending pool 使用了 Uniswap v2 作為 oracle 來計算借錢所需 collateral 的量,可透過賣 DVT 給 Uniswap 來影響,使得借款時需要的抵押金變小。

2024.09.05

Damn Vulnerable DeFi - Truster

TrusterLenderPool.flashLoan 可用於呼叫任意其他合約函數。可以呼叫 DamnValuableToken.approve 來 approve 自己,再用 DamnValuableToken.transferFrom 來取得其 DVT。

2024.09.06

Damn Vulnerable DeFi - Free Rider

  1. FreeRiderNFTMarketplace.buyMany 的沒有驗證是否支付了 NTFs 總價
  2. FreeRiderNFTMarketplace._buyOne 最後將 NFT 價錢支付給了買家,而不是原本的擁有者
  3. Player 一開始沒有足夠的 ETH 進行攻擊,但可以使用 UniswapV2 提供的 flash swap 來借到足夠的 ETH

2024.09.07

Damn Vulnerable DeFi - Side Entrance

2024.09.08

Damn Vulnerable DeFi - Backdoor

2024.09.09

Damn Vulnerable DeFi - Climber

2024.09.10

Damn Vulnerable DeFi - ABI Smuggling

2024.09.11

Damn Vulnerable DeFi - Shards

2024.09.12

Damn Vulnerable DeFi - Withdrawal

2024.09.13

今天在打 神盾盃—資安競賽,拿了第二(第 一、二 名皆是竹狐戰隊成員)。

打完後今天還有一點時間,來看 Damn Vulnerable DeFi - PuppetV3。 目前把 UniswapV3Pool.swap 的使用方法看好、IUniswapV3SwapCallback 寫好,明天把這題剩下的部分看完。 應該之後會找時間把整個 UniswapV3 看過。

2024.09.14

Damn Vulnerable DeFi - Puppet V3

2024.09.16

還在處理 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:]

2024.09.18

Damn Vulnerable DeFi - Wallet Mining 的簽名部分還在 debug,其他部分好了。 Write-up

2024.09.19

昨天遇到簽名不對的問題是因為 domain separater 裏面含有該合約的地址,我原本是直接拿 singletonCopy.getTransactionHash,但 address(singletonCopy) != USER_DEPOSIT_ADDRESS。 今天第一次知道原來 ecrecover 檢查到錯的 hash 的時候會回傳其他的地址。改天來研究一下。

Damn Vulnerable DeFi - Wallet Mining

2024.09.20

今天看了一下 Damn Vulnerable DeFi - Curvy Puppet 的 setup script,去了解了一下 Permit2AllowanceTransferSignatureTransfer 的運作原理。

2024.09.21

  • BlazCTF 2024

2024.09.22

來打我人生第一場的 web3 CTF 🎉🎉。