323 challenges · 18 vulnerability classes · 9 languages
Security challenges.
Real code, single-line vulnerabilities. Filter by stack, difficulty, or vulnerability class.
323total
97easy
156medium
70hard
easy
Widget Escape
WidgetDock is an Electron desktop dashboard where users install community widgets for calendars, weather, streaming stats, and smart-home controls. Widgets run sandboxed and use a preload bridge to read images and configuration files from their own install directory. Review the IPC path for local asset reads, especially how a widget-supplied asset name becomes a main-process file read.
Languagejavascript / typescriptVulnerabilityPath TraversalDomainNative
100 ptsOpen challenge →
medium
City Report Relay
Roamly is a travel marketplace that emails local offers to customers based on their preferred city. Customers can edit this preference through their profile, and a nightly job builds subscriber reports for recently changed city preferences. The job uses a legacy reporting account with broad read access to operational datasets. Review how the city value moves from the profile request into the delayed reporting workflow.
LanguagephpVulnerabilityInjectionDomainWeb
150 ptsOpen challenge →
easy
Stream Admin Panel
PopcornFlix is a subscription movie streaming service. Admins manage the catalog through a GraphQL API, where they can add, update, and remove movies. The team recently refactored the mutation resolvers to use Spring Security method annotations. Review the admin catalog resolver and figure out whether every privileged action is actually locked down.
LanguagejavaVulnerabilityAuthorization & Access ControlDomainGraphQL
100 ptsOpen challenge →
easy
Pet Caption XSS
PetPal Prints lets pet owners upload photos and captions for custom mugs. The team added rich captions so customers can link to rescue shelters, and flagged orders now appear in a staff moderation queue before printing. Review how saved captions move from the public order form into the moderation dashboard, especially where the Leaf template decides whether to escape or trust the caption.
LanguageswiftVulnerabilityXSS (Cross-Site Scripting)DomainWeb
100 ptsOpen challenge →
Showing 12 of 323
Full archive
Premium unlocks all 323 challenges.
Full challenge access, the complete archive, and learning paths.
See pricing