Academy · Labs

The Lab Universe

Hands-on exercises across every class of vulnerability. Read the brief, work it against your own target, and submit the flag. Points and your level are yours the moment you solve one — join the Academy to start tracking them.

16
labs
Difficulty
Category
Track
ApprenticeCSRF

Changing an email with a single GET

Make a logged-in victim's browser send a state-changing request.

10 pts · 20 minStart →
ApprenticeCross-site scripting (XSS)

Reflected in the search box

Get your script to run in another visitor's browser on this origin.

10 pts · 20 minStart →
ApprenticeCross-site scripting (XSS)

The error page that echoes your input

Get your script to run in another visitor's browser on this origin.

10 pts · 20 minStart →
PractitionerCross-site scripting (XSS)

A comment field that renders markdown too eagerly

Get your script to run in another visitor's browser on this origin.

25 pts · 45 minStart →
PractitionerCSRF

A JSON endpoint that accepts form content-type

Make a logged-in victim's browser send a state-changing request.

25 pts · 45 minStart →
PractitionerCross-site scripting (XSS)

Breaking out of an HTML attribute

Get your script to run in another visitor's browser on this origin.

25 pts · 45 minStart →
PractitionerCross-site scripting (XSS)

Stored in a display name

Get your script to run in another visitor's browser on this origin.

25 pts · 45 minStart →
PractitionerCSRF

The form with no anti-forgery token

Make a logged-in victim's browser send a state-changing request.

25 pts · 45 minStart →
ExpertCSRF

Defeating a predictable token

Make a logged-in victim's browser send a state-changing request.

50 pts · 90 minStart →
ExpertCross-site scripting (XSS)

DOM XSS through the URL fragment

Get your script to run in another visitor's browser on this origin.

50 pts · 90 minStart →
ExpertCross-site scripting (XSS)

Injecting into a JSON block the page evaluates

Get your script to run in another visitor's browser on this origin.

50 pts · 90 minStart →
ExpertCSRF

SameSite is not set, and it matters

Make a logged-in victim's browser send a state-changing request.

50 pts · 90 minStart →
ExpertCross-site scripting (XSS)

Slipping past a naive filter

Get your script to run in another visitor's browser on this origin.

50 pts · 90 minStart →
MasterCSRF

Login CSRF into an attacker's account

Make a logged-in victim's browser send a state-changing request.

100 pts · 180 minStart →
MasterCross-site scripting (XSS)

Mutation XSS the sanitiser did not expect

Get your script to run in another visitor's browser on this origin.

100 pts · 180 minStart →
MasterCross-site scripting (XSS)

Stealing a session under a weak CSP

Get your script to run in another visitor's browser on this origin.

100 pts · 180 minStart →