282 challenges · 17 vulnerability classes · 9 languages
Security challenges.
Real code, single-line vulnerabilities. Filter by stack, difficulty, or vulnerability class.
282total
80easy
143medium
59hard
medium
Whisper Attachments
Whisper is a private messaging app that lets you forward photos and voice notes to other apps using Android's share sheet. Attachments are exposed through a ContentProvider so apps like Gmail or Photos can read them over a content:// URI. Review how the provider resolves the requested file before handing back a descriptor.
LanguagekotlinVulnerabilityPath TraversalDomainMobile
150 ptsOpen challenge →
easy
TreasureBox Game
TreasureBox is an on-chain "crack the code" mini-game that went viral on crypto Twitter. The deployer locks up some ETH and sets a secret passphrase; the first player to submit the correct passphrase walks away with the entire pot. The team prides itself on keeping the answer hidden until someone is smart enough to guess it. Review the contracts and figure out whether the prize is really safe until someone guesses correctly.
LanguagesolidityVulnerabilityInformation DisclosureDomainBlockchain
100 ptsOpen challenge →
medium
PaperForge Batch
PaperForge is a document-conversion SaaS where users upload a .zip of files to batch-convert to PDF. Anonymous users can submit jobs from the landing page. The upload endpoint stores the archive and a background worker unpacks it to a temp directory before rendering each file. Review the pipeline that turns an uploaded archive into individual documents on disk. Is the worker really safe trusting that it is just a zip?
LanguagepythonVulnerabilityDoS (Denial of Service)DomainAPI
150 ptsOpen challenge →
hard
Logo Import URL
PixelVault is a design-portfolio SaaS where creatives showcase their work. A popular feature lets users import a brand logo straight from a URL so they don't have to download and re-upload assets. The engineer who built it read up on command injection and was careful to never use a shell, passing arguments as a list instead. Review the import pipeline and decide whether that precaution is enough.
LanguagepythonVulnerabilityInjectionDomainWeb
200 ptsOpen challenge →
medium
Reset Link Builder
TeamSync is a team-collaboration SaaS (think shared boards, tasks, and chat for distributed teams). Like every app, it ships a "forgot password" flow: a user submits their email and TeamSync sends them a link to choose a new password. The backend is Django. During a security review of the account-recovery code, take a close look at how the reset link is assembled before it goes out in the email.
LanguagepythonVulnerabilityAuthenticationDomainWeb
150 ptsOpen challenge →
Showing 12 of 282
Full archive
Premium unlocks all 282 challenges.
Full challenge access, the complete archive, and learning paths.
See pricing