Unguarded Initializer
Unsafe proxy upgrade
Explain how an outside account can become the owner of the rewards distributor and sweep its tokens, then fix the deployment and the contract.
- Language
- Solidity
- Time
- 20–30 minutes
Unsafe proxy upgrade
Explain how an outside account can become the owner of the rewards distributor and sweep its tokens, then fix the deployment and the contract.
First-depositor attack
Show how the first depositor can make a later deposit mint zero shares, quantify the loss, and harden the vault.
Signature replay
Find every way a signed voucher can be used more than its signer intended, and redesign the signed message.
Oracle manipulation
Describe a single-transaction sequence that borrows more than the collateral is worth, estimate what it costs, and replace the price source.
Account validation
Show how a caller who is not the vault authority can pass the authorisation check and withdraw from the vault, then make the account constraints do the work.
Read-only reentrancy
Explain how the lending market can be made to value pool shares at an inflated price even though the pool itself is protected by a reentrancy guard.
How to use them
It states what an attacker wants to achieve. Work out which assumption in the code makes it possible.
Hints are revealed one at a time and move from where to look towards what to try.
Before opening the solution, write the change you would ask the team to make and why.
The solution explains the root cause and the fix, with references to the standard or documentation.
The code is intentionally vulnerable and exists only on this site. Do not deploy it, and do not apply what you learn to systems you are not authorised to test.
Research programmes define components, identifiers and rules for each protocol in scope. Validated findings are recognised.