Skip to content

πŸŽ“ Roadmap to conquer PortSwigger Web Security Academy labs β€” SQLi, XSS, CSRF & more πŸ›‘οΈπŸ•΅οΈβ€β™‚οΈ

License

Notifications You must be signed in to change notification settings

onyxwizard/portswigger-academy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ” Portswigger Web Security Academy - Lab Tracker πŸ§ͺ

A comprehensive roadmap to mastering web application security through hands-on labs β€” curated from PortSwigger Web Security Academy

This guide helps both beginners and advanced learners systematically explore web vulnerabilities, practice real-world labs, and track progress like a true hacker πŸ₯·πŸ’₯.

Each section includes:

  • 🧠 Short description
  • ⚠️ Potential impact
  • πŸ’» List of labs with difficulty level and emoji reflecting the nature of the exploit
  • πŸ•ΉοΈ Status tracker:
    • βœ… Pwned – You’ve exploited it!
    • ⬜ Not Pwned – Still waiting to be hacked

🧭 How to Use This Guide

  1. Follow the order – Topics are arranged by complexity and learning flow.
  2. Track your progress – Mark labs as βœ… Pwned once completed.
  3. Practice regularly – Solve labs directly on PortSwigger Web Security Academy.
  4. Don’t get stuck – Skip tough labs and revisit them later after gaining more experience.

πŸ’‘ Tip: Build foundational knowledge before diving into advanced topics.

πŸ›‘οΈ Vulnerability List & Lab Tracker

1️⃣ SQL Injection (18 Labs) πŸ’₯

What? Injecting malicious SQL queries to manipulate databases. Impact: Can lead to full database compromise, data leaks, or even remote code execution.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 🧱 SQL injection vulnerability in WHERE clause allowing retrieval of hidden data βœ… Pwned πŸ“
Apprentice πŸ”“ SQL injection vulnerability allowing login bypass βœ… Pwned πŸ“
Practitioner πŸ—„οΈ SQL injection attack, querying the database type and version on Oracle βœ… Pwned πŸ“
Practitioner πŸ—„οΈ SQL injection attack, querying the database type and version on MySQL and Microsoft βœ… Pwned πŸ“
Practitioner πŸ“ SQL injection attack, listing the database contents on non-Oracle databases βœ… Pwned πŸ“
Practitioner πŸ“ SQL injection attack, listing the database contents on Oracle βœ… Pwned πŸ“
Practitioner πŸ” SQL injection UNION attack, determining the number of columns returned by the query βœ… Pwned πŸ“
Practitioner πŸ” SQL injection UNION attack, finding a column containing text βœ… Pwned πŸ“
Practitioner πŸ•΅οΈ SQL injection UNION attack, retrieving data from other tables βœ… Pwned πŸ“
Practitioner 🧩 SQL injection UNION attack, retrieving multiple values in a single column βœ… Pwned πŸ“
Practitioner πŸ‘€ Blind SQL injection with conditional responses βœ… Pwned πŸ“
Practitioner ❌ Blind SQL injection with conditional errors βœ… Pwned πŸ“
Practitioner πŸ“’ Visible error-based SQL injection βœ… Pwned πŸ“
Practitioner ⏳ Blind SQL injection with time delays βœ… Pwned πŸ“
Practitioner πŸ•’ Blind SQL injection with time delays and information retrieval βœ… Pwned πŸ“
Practitioner 🌐 Blind SQL injection with out-of-band interaction βœ… Pwned πŸ“
Practitioner πŸ“¦ Blind SQL injection with out-of-band data exfiltration βœ… Pwned πŸ“
Practitioner 🧼 SQL injection with filter bypass via XML encoding βœ… Pwned πŸ“

2️⃣ Cross-site Scripting (XSS) (30 Labs) πŸ’¬

What? Injecting malicious scripts into trusted websites. Impact: Session hijacking, phishing, defacement, or redirecting users.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 Reflected XSS into HTML context with nothing encoded ⬜ Not Pwned
Apprentice 🧱 Stored XSS into HTML context with nothing encoded ⬜ Not Pwned
Apprentice 🧩 DOM XSS in document.write sink using source location.search ⬜ Not Pwned
Apprentice 🧩 DOM XSS in innerHTML sink using source location.search ⬜ Not Pwned
Apprentice 🧩 DOM XSS in jQuery anchor href attribute sink using location.search source ⬜ Not Pwned
Apprentice 🧩 DOM XSS in jQuery selector sink using a hashchange event ⬜ Not Pwned
Apprentice 🧱 Reflected XSS into attribute with angle brackets HTML-encoded ⬜ Not Pwned
Apprentice 🧱 Stored XSS into anchor href attribute with double quotes HTML-encoded ⬜ Not Pwned
Apprentice 🧱 Reflected XSS into a JavaScript string with angle brackets HTML encoded ⬜ Not Pwned
Practitioner 🧩 DOM XSS in document.write sink using source location.search inside a select element ⬜ Not Pwned
Practitioner 🧩 DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded ⬜ Not Pwned
Practitioner 🧱 Reflected DOM XSS ⬜ Not Pwned
Practitioner 🧱 Stored DOM XSS ⬜ Not Pwned
Practitioner πŸ›‘ Reflected XSS into HTML context with most tags and attributes blocked ⬜ Not Pwned
Practitioner πŸ›‘ Reflected XSS into HTML context with all tags blocked except custom ones ⬜ Not Pwned
Practitioner πŸ–ΌοΈ Reflected XSS with some SVG markup allowed ⬜ Not Pwned
Practitioner πŸ”— Reflected XSS in canonical link tag ⬜ Not Pwned
Practitioner 🧱 Reflected XSS into a JavaScript string with single quote and backslash escaped ⬜ Not Pwned
Practitioner 🧱 Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped ⬜ Not Pwned
Practitioner 🧱 Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped ⬜ Not Pwned
Practitioner 🧱 Reflected XSS into a template literal with angle brackets, single, double quotes, backslash and backticks Unicode-escaped ⬜ Not Pwned
Practitioner πŸͺ Exploiting cross-site scripting to steal cookies ⬜ Not Pwned
Practitioner πŸ” Exploiting cross-site scripting to capture passwords ⬜ Not Pwned
Practitioner πŸ›‘οΈ Exploiting XSS to bypass CSRF defenses ⬜ Not Pwned
Expert 🧰 Reflected XSS with AngularJS sandbox escape without strings ⬜ Not Pwned
Expert 🧰 Reflected XSS with AngularJS sandbox escape and CSP ⬜ Not Pwned
Expert πŸ›‘ Reflected XSS with event handlers and href attributes blocked ⬜ Not Pwned
Expert πŸ”— Reflected XSS in a JavaScript URL with some characters blocked ⬜ Not Pwned
Expert πŸ“‰ Reflected XSS protected by very strict CSP, with dangling markup attack ⬜ Not Pwned
Expert 🧨 Reflected XSS protected by CSP, with CSP bypass ⬜ Not Pwned

3️⃣ Cross-site Request Forgery (CSRF) (12 Labs) πŸ”

What? Forcing a user to perform unwanted actions on a web application where they're authenticated. Impact: Unauthorized fund transfers, account modifications, or privilege escalation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 CSRF vulnerability with no defenses ⬜ Not Pwned
Practitioner πŸ” CSRF where token validation depends on request method ⬜ Not Pwned
Practitioner πŸ” CSRF where token validation depends on token being present ⬜ Not Pwned
Practitioner πŸ” CSRF where token is not tied to user session ⬜ Not Pwned
Practitioner πŸ” CSRF where token is tied to non-session cookie ⬜ Not Pwned
Practitioner πŸ” CSRF where token is duplicated in cookie ⬜ Not Pwned
Practitioner πŸ”„ SameSite Lax bypass via method override ⬜ Not Pwned
Practitioner πŸ”„ SameSite Strict bypass via client-side redirect ⬜ Not Pwned
Practitioner πŸ”„ SameSite Strict bypass via sibling domain ⬜ Not Pwned
Practitioner πŸ”„ SameSite Lax bypass via cookie refresh ⬜ Not Pwned
Practitioner πŸ“‘ CSRF where Referer validation depends on header being present ⬜ Not Pwned
Practitioner πŸ“‘ CSRF with broken Referer validation ⬜ Not Pwned

4️⃣ Clickjacking (5 Labs) πŸ‘οΈ

What? Tricking a user into clicking something different than intended. Impact: Can be used to steal credentials, enable XSS, or perform actions unknowingly.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ‘οΈ Basic clickjacking with CSRF token protection ⬜ Not Pwned
Apprentice πŸ–ΌοΈ Clickjacking with form input data prefilled from a URL parameter ⬜ Not Pwned
Apprentice πŸ›‘οΈ Clickjacking with a frame buster script ⬜ Not Pwned
Practitioner πŸ’₯ Exploiting clickjacking vulnerability to trigger DOM-based XSS ⬜ Not Pwned
Practitioner πŸ”„ Multistep clickjacking ⬜ Not Pwned

5️⃣ DOM-based vulnerabilities (7 Labs) 🧩

What? Client-side bugs that can be exploited without server-side changes. Impact: XSS, redirections, cookie manipulation, and more.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner 🧩 DOM XSS using web messages ⬜ Not Pwned
Practitioner 🧩 DOM XSS using web messages and a JavaScript URL ⬜ Not Pwned
Practitioner 🧩 DOM XSS using web messages and JSON.parse ⬜ Not Pwned
Practitioner 🧲 DOM-based open redirection ⬜ Not Pwned
Practitioner πŸͺ DOM-based cookie manipulation ⬜ Not Pwned
Expert 🧠 Exploiting DOM clobbering to enable XSS ⬜ Not Pwned
Expert 🧠 Clobbering DOM attributes to bypass HTML filters ⬜ Not Pwned

6️⃣ Cross-origin Resource Sharing (CORS) (3 Labs) 🌍

What? Misconfigured CORS policies can allow unauthorized access to sensitive APIs. Impact: Data leakage, session hijacking, and API abuse.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🌍 CORS vulnerability with basic origin reflection ⬜ Not Pwned
Apprentice 🌍 CORS vulnerability with trusted null origin ⬜ Not Pwned
Practitioner 🌍 CORS vulnerability with trusted insecure protocols ⬜ Not Pwned

7️⃣ XML External Entity (XXE) Injection (9 Labs) 🧬

What? Exploiting poorly configured XML processors to read files or interact with internal systems.
Impact: File disclosure, SSRF, and system enumeration.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ“ Exploiting XXE using external entities to retrieve files ⬜ Not Pwned
Apprentice πŸ”„ Exploiting XXE to perform SSRF attacks ⬜ Not Pwned
Practitioner 🌐 Blind XXE with out-of-band interaction ⬜ Not Pwned
Practitioner 🌐 Blind XXE with out-of-band interaction via XML parameter entities ⬜ Not Pwned
Practitioner πŸ“¦ Exploiting blind XXE to exfiltrate data using a malicious external DTD ⬜ Not Pwned
Practitioner πŸ“’ Exploiting blind XXE to retrieve data via error messages ⬜ Not Pwned
Practitioner πŸ“ Exploiting XInclude to retrieve files ⬜ Not Pwned
Practitioner πŸ“ Exploiting XXE via image file upload ⬜ Not Pwned
Expert πŸ“¦ Exploiting XXE to retrieve data by repurposing a local DTD ⬜ Not Pwned

8️⃣ Server-side Request Forgery (SSRF) (7 Labs) πŸ”„

What? Inducing the server to make requests to arbitrary systems.
Impact: Internal network scanning, service interaction, and data leakage.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🌐 Basic SSRF against the local server ⬜ Not Pwned
Apprentice 🌐 Basic SSRF against another back-end system ⬜ Not Pwned
Practitioner 🌐 Blind SSRF with out-of-band detection ⬜ Not Pwned
Practitioner πŸ›‘ SSRF with blacklist-based input filter ⬜ Not Pwned
Practitioner πŸ” SSRF with filter bypass via open redirection vulnerability ⬜ Not Pwned
Expert 🐚 Blind SSRF with Shellshock exploitation ⬜ Not Pwned
Expert 🟒 SSRF with whitelist-based input filter ⬜ Not Pwned

9️⃣ HTTP Request Smuggling (21 Labs) 🚚

What? Exploiting discrepancies between how HTTP requests are parsed by front-end and back-end servers.
Impact: Bypassing security controls, cache poisoning, XSS, and session fixation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner πŸ§ͺ HTTP request smuggling, confirming a CL.TE vulnerability via differential responses ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP request smuggling, confirming a TE.CL vulnerability via differential responses ⬜ Not Pwned
Practitioner πŸ” Exploiting HTTP request smuggling to bypass front-end security controls, CL.TE vulnerability ⬜ Not Pwned
Practitioner πŸ” Exploiting HTTP request smuggling to bypass front-end security controls, TE.CL vulnerability ⬜ Not Pwned
Practitioner πŸ§ͺ Exploiting HTTP request smuggling to reveal front-end request rewriting ⬜ Not Pwned
Practitioner πŸ§ͺ Exploiting HTTP request smuggling to capture other users' requests ⬜ Not Pwned
Practitioner πŸ’¬ Exploiting HTTP request smuggling to deliver reflected XSS ⬜ Not Pwned
Practitioner πŸ§ͺ Response queue poisoning via H2.TE request smuggling ⬜ Not Pwned
Practitioner πŸ§ͺ H2.CL request smuggling ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP/2 request smuggling via CRLF injection ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP/2 request splitting via CRLF injection ⬜ Not Pwned
Practitioner πŸ§ͺ CL.0 request smuggling ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP request smuggling, basic CL.TE vulnerability ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP request smuggling, basic TE.CL vulnerability ⬜ Not Pwned
Practitioner πŸ§ͺ HTTP request smuggling, obfuscating the TE header ⬜ Not Pwned
Expert πŸ§ͺ Exploiting HTTP request smuggling to perform web cache poisoning ⬜ Not Pwned
Expert πŸ§ͺ Exploiting HTTP request smuggling to perform web cache deception ⬜ Not Pwned
Expert πŸ” Bypassing access controls via HTTP/2 request tunnelling ⬜ Not Pwned
Expert πŸ§ͺ Web cache poisoning via HTTP/2 request tunnelling ⬜ Not Pwned
Expert πŸ§ͺ Client-side desync ⬜ Not Pwned
Expert πŸ§ͺ Server-side pause-based request smuggling ⬜ Not Pwned

πŸ”Ÿ OS Command Injection (5 Labs) πŸ’₯

What? Injecting arbitrary operating system commands via vulnerable web inputs.
Impact: Full remote code execution on the server β€” potentially leading to full system compromise.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ’£ OS command injection, simple case ⬜ Not Pwned
Practitioner ⏳ Blind OS command injection with time delays ⬜ Not Pwned
Practitioner πŸ“€ Blind OS command injection with output redirection ⬜ Not Pwned
Practitioner 🌐 Blind OS command injection with out-of-band interaction ⬜ Not Pwned
Practitioner πŸ“¦ Blind OS command injection with out-of-band data exfiltration ⬜ Not Pwned

1️⃣1️⃣ Server-side Template Injection (7 Labs) 🧠

What? Exploiting template engines that allow user input to be parsed as code.
Impact: Can lead to remote code execution or sensitive data leakage depending on the template engine.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner πŸ§ͺ Basic server-side template injection ⬜ Not Pwned
Practitioner πŸ§ͺ Server-side template injection (code context) ⬜ Not Pwned
Practitioner πŸ“š Server-side template injection using documentation ⬜ Not Pwned
Practitioner πŸ› οΈ Server-side template injection in an unknown language with a documented exploit ⬜ Not Pwned
Practitioner πŸ“‘ Server-side template injection with information disclosure via user-supplied objects ⬜ Not Pwned
Expert πŸ” Server-side template injection in a sandboxed environment ⬜ Not Pwned
Expert 🧩 Server-side template injection with a custom exploit ⬜ Not Pwned

1️⃣2️⃣ Path Traversal (6 Labs) πŸ“

What? Manipulating file paths to access unauthorized files or directories.
Impact: Allows attackers to read or execute sensitive files like /etc/passwd.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ“‚ File path traversal, simple case ⬜ Not Pwned
Practitioner 🚫 File path traversal, traversal sequences blocked with absolute path bypass ⬜ Not Pwned
Practitioner 🧹 File path traversal, traversal sequences stripped non-recursively ⬜ Not Pwned
Practitioner πŸ” File path traversal, traversal sequences stripped with superfluous URL-decode ⬜ Not Pwned
Practitioner πŸ” File path traversal, validation of start of path ⬜ Not Pwned
Practitioner πŸ§ͺ File path traversal, validation of file extension with null byte bypass ⬜ Not Pwned

1️⃣3️⃣ Access Control Vulnerabilities (13 Labs) πŸ”

What? Flaws in how users are authorized to access certain resources.
Impact: Unauthorized access to admin functions, user accounts, or sensitive data.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸšͺ Unprotected admin functionality ⬜ Not Pwned
Apprentice πŸ”’ Unprotected admin functionality with unpredictable URL ⬜ Not Pwned
Apprentice πŸ§‘β€πŸ’Ό User role controlled by request parameter ⬜ Not Pwned
Apprentice 🧾 User role can be modified in user profile ⬜ Not Pwned
Apprentice πŸ†” User ID controlled by request parameter ⬜ Not Pwned
Apprentice πŸ”’ User ID controlled by request parameter, with unpredictable user IDs ⬜ Not Pwned
Apprentice πŸ“€ User ID controlled by request parameter with data leakage in redirect ⬜ Not Pwned
Apprentice πŸ“€ User ID controlled by request parameter with password disclosure ⬜ Not Pwned
Apprentice πŸ”— Insecure direct object references ⬜ Not Pwned
Practitioner πŸ”„ URL-based access control can be circumvented ⬜ Not Pwned
Practitioner 🧱 Method-based access control can be circumvented ⬜ Not Pwned
Practitioner πŸ”„ Multi-step process with no access control on one step ⬜ Not Pwned
Practitioner πŸ“‘ Referer-based access control ⬜ Not Pwned

1️⃣4️⃣ Authentication (14 Labs) πŸ”

What? Mechanisms used to verify user identity. Flaws can allow attackers to bypass or brute-force authentication.
Impact: Account takeover, privilege escalation, and unauthorized access.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ‘€ Username enumeration via different responses ⬜ Not Pwned
Apprentice πŸ” 2FA simple bypass ⬜ Not Pwned
Apprentice πŸ”„ Password reset broken logic ⬜ Not Pwned
Practitioner πŸ‘€ Username enumeration via subtly different responses ⬜ Not Pwned
Practitioner πŸ•’ Username enumeration via response timing ⬜ Not Pwned
Practitioner πŸ›‘ Broken brute-force protection, IP block ⬜ Not Pwned
Practitioner πŸ”’ Username enumeration via account lock ⬜ Not Pwned
Practitioner 🎯 2FA broken logic ⬜ Not Pwned
Practitioner πŸ” Brute-forcing a stay-logged-in cookie ⬜ Not Pwned
Practitioner πŸͺ Offline password cracking ⬜ Not Pwned
Practitioner 🌐 Password reset poisoning via middleware ⬜ Not Pwned
Practitioner πŸ” Password brute-force via password change ⬜ Not Pwned
Expert 🚫 Broken brute-force protection, multiple credentials per request ⬜ Not Pwned
Expert πŸ” 2FA bypass using a brute-force attack ⬜ Not Pwned

1️⃣5️⃣ WebSockets (3 Labs) πŸͺŸ

What? Bidirectional communication channels between client and server. Vulnerabilities often stem from insecure implementations.
Impact: Session hijacking, cross-site WebSocket hijacking, or message manipulation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ“‘ Manipulating WebSocket messages to exploit vulnerabilities ⬜ Not Pwned
Practitioner πŸ”„ Cross-site WebSocket hijacking ⬜ Not Pwned
Practitioner πŸ§ͺ Manipulating the WebSocket handshake to exploit vulnerabilities ⬜ Not Pwned

1️⃣6️⃣ Web Cache Poisoning (13 Labs) 🧫

What? Exploiting caching mechanisms to serve malicious content to users.
Impact: Delivering XSS payloads, phishing pages, or malware through trusted caches.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner 🧴 Web cache poisoning with an unkeyed header ⬜ Not Pwned
Practitioner πŸͺ Web cache poisoning with an unkeyed cookie ⬜ Not Pwned
Practitioner πŸ§ͺ Web cache poisoning with multiple headers ⬜ Not Pwned
Practitioner πŸ“¦ Targeted web cache poisoning using an unknown header ⬜ Not Pwned
Practitioner πŸ”— Web cache poisoning via an unkeyed query string ⬜ Not Pwned
Practitioner πŸ“‚ Web cache poisoning via an unkeyed query parameter ⬜ Not Pwned
Practitioner 🧱 Parameter cloaking ⬜ Not Pwned
Practitioner πŸ“¦ Web cache poisoning via a fat GET request ⬜ Not Pwned
Practitioner 🧭 URL normalization ⬜ Not Pwned
Expert 🧲 Web cache poisoning to exploit a DOM vulnerability via a cache with strict cacheability criteria ⬜ Not Pwned
Expert πŸ”— Combining web cache poisoning vulnerabilities ⬜ Not Pwned
Expert 🧨 Cache key injection ⬜ Not Pwned
Expert 🧊 Internal cache poisoning ⬜ Not Pwned

1️⃣7️⃣ Insecure Deserialization (10 Labs) πŸ“¦

What? Exploiting unsafe deserialization of untrusted data, leading to RCE or session tampering.
Impact: Remote code execution, privilege escalation, or object manipulation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 Modifying serialized objects ⬜ Not Pwned
Practitioner 🧩 Modifying serialized data types ⬜ Not Pwned
Practitioner πŸ” Using application functionality to exploit insecure deserialization ⬜ Not Pwned
Practitioner 🐘 Arbitrary object injection in PHP ⬜ Not Pwned
Practitioner 🧰 Exploiting Java deserialization with Apache Commons ⬜ Not Pwned
Practitioner πŸ“¦ Exploiting PHP deserialization with a pre-built gadget chain ⬜ Not Pwned
Practitioner 🐍 Exploiting Ruby deserialization using a documented gadget chain ⬜ Not Pwned
Expert 🧠 Developing a custom gadget chain for Java deserialization ⬜ Not Pwned
Expert 🧠 Developing a custom gadget chain for PHP deserialization ⬜ Not Pwned
Expert πŸ“¦ Using PHAR deserialization to deploy a custom gadget chain ⬜ Not Pwned

1️⃣8️⃣ Information Disclosure (5 Labs) πŸ“¦

What? Accidental exposure of sensitive information like error messages, debug pages, or source code.
Impact: Can expose internal logic, credentials, or vulnerabilities to attackers.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ” Information disclosure in error messages ⬜ Not Pwned
Apprentice πŸ› οΈ Information disclosure on debug page ⬜ Not Pwned
Apprentice πŸ“ Source code disclosure via backup files ⬜ Not Pwned
Apprentice πŸ” Authentication bypass via information disclosure ⬜ Not Pwned
Practitioner πŸ“š Information disclosure in version control history ⬜ Not Pwned

1️⃣9️⃣ Business Logic Vulnerabilities (11 Labs) 🎯

What? Logical flaws in how the application enforces business rules. Often overlooked by traditional scanners.
Impact: Financial fraud, privilege escalation, unauthorized access.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ€– Excessive trust in client-side controls ⬜ Not Pwned
Apprentice 🧱 High-level logic vulnerability ⬜ Not Pwned
Apprentice πŸ”€ Inconsistent security controls ⬜ Not Pwned
Apprentice 🧨 Flawed enforcement of business rules ⬜ Not Pwned
Practitioner 🧩 Low-level logic flaw ⬜ Not Pwned
Practitioner πŸ”„ Inconsistent handling of exceptional input ⬜ Not Pwned
Practitioner 🌐 Weak isolation on dual-use endpoint ⬜ Not Pwned
Practitioner 🧭 Insufficient workflow validation ⬜ Not Pwned
Practitioner πŸ”‘ Authentication bypass via flawed state machine ⬜ Not Pwned
Practitioner πŸ’° Infinite money logic flaw ⬜ Not Pwned
Expert 🚫 Bypassing access controls using email address parsing discrepancies ⬜ Not Pwned

2️⃣0️⃣ HTTP Host Header Attacks (7 Labs) πŸ“‘

What? Exploiting misconfigured server behavior based on the Host header.
Impact: Password reset poisoning, SSRF, cache poisoning, or backend interaction.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ”’ Basic password reset poisoning ⬜ Not Pwned
Apprentice 🧲 Host header authentication bypass ⬜ Not Pwned
Practitioner 🧫 Web cache poisoning via ambiguous requests ⬜ Not Pwned
Practitioner 🌐 Routing-based SSRF ⬜ Not Pwned
Practitioner πŸ§ͺ SSRF via flawed request parsing ⬜ Not Pwned
Practitioner πŸ”„ Host validation bypass via connection state attack ⬜ Not Pwned
Expert 🧨 Password reset poisoning via dangling markup ⬜ Not Pwned

2️⃣1️⃣ OAuth Authentication (6 Labs) πŸ”

What? Misconfigurations in OAuth implementations that can allow token theft or account takeover.
Impact: Unauthorized access to user accounts or services.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ” Authentication bypass via OAuth implicit flow ⬜ Not Pwned
Practitioner 🌐 SSRF via OpenID dynamic client registration ⬜ Not Pwned
Practitioner πŸ”— Forced OAuth profile linking ⬜ Not Pwned
Practitioner πŸ” OAuth account hijacking via redirect_uri ⬜ Not Pwned
Practitioner πŸ“¦ Stealing OAuth access tokens via an open redirect ⬜ Not Pwned
Expert πŸ•΅οΈ Stealing OAuth access tokens via a proxy page ⬜ Not Pwned

2️⃣2️⃣ File Upload Vulnerabilities (7 Labs) πŸ“

What? Exploiting insecure file upload functionality to execute malicious files or gain remote code execution.
Impact: Full server compromise, data exfiltration, or persistent backdoor access.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧨 Remote code execution via web shell upload ⬜ Not Pwned
Apprentice πŸ” Web shell upload via Content-Type restriction bypass ⬜ Not Pwned
Practitioner πŸ›€οΈ Web shell upload via path traversal ⬜ Not Pwned
Practitioner 🧯 Web shell upload via extension blacklist bypass ⬜ Not Pwned
Practitioner πŸ§ͺ Web shell upload via obfuscated file extension ⬜ Not Pwned
Practitioner πŸ’₯ Remote code execution via polyglot web shell upload ⬜ Not Pwned
Expert πŸƒβ€β™‚οΈ Web shell upload via race condition ⬜ Not Pwned

2️⃣3️⃣ JWT Attacks (8 Labs) πŸ”

What? Exploiting weaknesses in JSON Web Token (JWT) implementations.
Impact: Session hijacking, privilege escalation, or unauthorized access to protected endpoints.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 JWT authentication bypass via unverified signature ⬜ Not Pwned
Apprentice πŸ›‘οΈ JWT authentication bypass via flawed signature verification ⬜ Not Pwned
Practitioner πŸ”‘ JWT authentication bypass via weak signing key ⬜ Not Pwned
Practitioner 🧩 JWT authentication bypass via jwk header injection ⬜ Not Pwned
Practitioner πŸ”— JWT authentication bypass via jku header injection ⬜ Not Pwned
Practitioner πŸ“‚ JWT authentication bypass via kid header path traversal ⬜ Not Pwned
Expert πŸ”„ JWT authentication bypass via algorithm confusion ⬜ Not Pwned
Expert πŸ”’ JWT authentication bypass via algorithm confusion with no exposed key ⬜ Not Pwned

2️⃣4️⃣ Essential Skills (2 Labs) 🧠

What? Core techniques used during real-world assessments to discover vulnerabilities faster.
Impact: Improves efficiency and effectiveness of bug hunting.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner πŸ” Discovering vulnerabilities quickly with targeted scanning ⬜ Not Pwned
Practitioner 🧹 Scanning non-standard data structures ⬜ Not Pwned

2️⃣5️⃣ Prototype Pollution (10 Labs) 🧬

What? Exploiting JavaScript object prototype manipulation to affect application logic.
Impact: Can lead to XSS, privilege escalation, or RCE depending on implementation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Practitioner 🌐 Client-side prototype pollution via browser APIs ⬜ Not Pwned
Practitioner πŸ’¬ DOM XSS via client-side prototype pollution ⬜ Not Pwned
Practitioner πŸ”„ DOM XSS via an alternative prototype pollution vector ⬜ Not Pwned
Practitioner 🧼 Client-side prototype pollution via flawed sanitization ⬜ Not Pwned
Practitioner 🧱 Client-side prototype pollution in third-party libraries ⬜ Not Pwned
Practitioner πŸ‘‘ Privilege escalation via server-side prototype pollution ⬜ Not Pwned
Practitioner πŸ” Detecting server-side prototype pollution without polluted property reflection ⬜ Not Pwned
Practitioner 🧯 Bypassing flawed input filters for server-side prototype pollution ⬜ Not Pwned
Practitioner πŸ’₯ Remote code execution via server-side prototype pollution ⬜ Not Pwned
Expert πŸ“¦ Exfiltrating sensitive data via server-side prototype pollution ⬜ Not Pwned

2️⃣6️⃣ GraphQL API Vulnerabilities (5 Labs) πŸ“Š

What? Misconfigurations or logical flaws in GraphQL APIs that allow data leakage or abuse.
Impact: Unauthorized access to private data, account takeover, or SSRF.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧾 Accessing private GraphQL posts ⬜ Not Pwned
Practitioner πŸ” Accidental exposure of private GraphQL fields ⬜ Not Pwned
Practitioner πŸ” Finding a hidden GraphQL endpoint ⬜ Not Pwned
Practitioner πŸ•΅οΈ Bypassing GraphQL brute force protections ⬜ Not Pwned
Practitioner πŸ” Performing CSRF exploits over GraphQL ⬜ Not Pwned

2️⃣7️⃣ Race Conditions (6 Labs) ⏳

What? Exploiting timing flaws in how a system handles concurrent requests.
Impact: Bypassing rate limits, gaining unauthorized access, or manipulating transactions.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice 🧱 Limit overrun race conditions ⬜ Not Pwned
Practitioner πŸ”„ Bypassing rate limits via race conditions ⬜ Not Pwned
Practitioner πŸ”„ Multi-endpoint race conditions ⬜ Not Pwned
Practitioner πŸ• Single-endpoint race conditions ⬜ Not Pwned
Practitioner πŸ§ͺ Exploiting time-sensitive vulnerabilities ⬜ Not Pwned
Expert 🧩 Partial construction race conditions ⬜ Not Pwned

2️⃣8️⃣ NoSQL Injection (4 Labs) πŸš€

What? Injecting malicious queries into NoSQL databases like MongoDB to bypass authentication or extract data.
Impact: Can lead to full database compromise and privilege escalation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ” Detecting NoSQL injection ⬜ Not Pwned
Apprentice πŸ” Exploiting NoSQL operator injection to bypass authentication ⬜ Not Pwned
Practitioner πŸ“ Exploiting NoSQL injection to extract data ⬜ Not Pwned
Practitioner 🧲 Exploiting NoSQL operator injection to extract unknown fields ⬜ Not Pwned

2️⃣9️⃣ API Testing (5 Labs) πŸ”Ž

What? Identifying and exploiting misconfigurations or vulnerabilities in RESTful APIs.
Impact: Data leakage, account takeover, or privilege escalation.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ“š Exploiting an API endpoint using documentation ⬜ Not Pwned
Practitioner πŸ“₯ Exploiting server-side parameter pollution in a query string ⬜ Not Pwned
Practitioner πŸ” Finding and exploiting an unused API endpoint ⬜ Not Pwned
Practitioner 🧨 Exploiting a mass assignment vulnerability ⬜ Not Pwned
Expert πŸ“‘ Exploiting server-side parameter pollution in a REST URL ⬜ Not Pwned

3️⃣0️⃣ Web LLM Attacks (4 Labs) πŸ€–

What? Exploiting Large Language Model (LLM) integrations in web apps for prompt manipulation or data exfiltration.
Impact: Prompt injections, data leaks, or unintended behavior from AI models.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ€– Exploiting LLM APIs with excessive agency ⬜ Not Pwned
Practitioner 🧠 Exploiting vulnerabilities in LLM APIs ⬜ Not Pwned
Practitioner 🧠 Indirect prompt injection ⬜ Not Pwned
Expert 🧠 Exploiting insecure output handling in LLMs ⬜ Not Pwned

3️⃣1️⃣ Web Cache Deception (5 Labs) πŸ§ͺ

What? Tricking caching systems into storing sensitive user data like session tokens or private content.
Impact: Stealing sensitive data from cache servers accessible to attackers.

πŸ“‹ Lab List

Difficulty Title Status Writeup
Apprentice πŸ›°οΈ Exploiting path mapping for web cache deception ⬜ Not Pwned
Practitioner πŸ”— Exploiting path delimiters for web cache deception ⬜ Not Pwned
Practitioner 🧹 Exploiting origin server normalization for web cache deception ⬜ Not Pwned
Practitioner 🧼 Exploiting cache server normalization for web cache deception ⬜ Not Pwned
Expert 🎯 Exploiting exact-match cache rules for web cache deception ⬜ Not Pwned

βœ… Summary

You now have a complete, and interactive README file that tracks all 146+ labs across:

  • πŸ” Server-Side Vulnerabilities
  • πŸ’¬ Client-Side Vulnerabilities
  • 🧠 Advanced Topics

This README can be used as a personal tracker, study guide, or shared with others looking to learn web security systematically through PortSwigger’s labs.

About

πŸŽ“ Roadmap to conquer PortSwigger Web Security Academy labs β€” SQLi, XSS, CSRF & more πŸ›‘οΈπŸ•΅οΈβ€β™‚οΈ

Topics

Resources

License

Stars

Watchers

Forks