PortSwigger Progress
Live tracker for my pass through the PortSwigger Web Security Academy — current status and links to writeups as they land.
PortSwigger Progress
Live tracker for my pass through the PortSwigger Web Security Academy. Lab ordering follows onyxwizard’s roadmap, and the reasoning behind that choice is in Episode #2.
This page updates as I go. Writeup links fill in progressively — not every lab gets one (the trivial Apprentice ones often don’t), but anything that taught me something non-obvious will.
Legend
| Symbol | Meaning |
|---|---|
| ✅ | Pwned |
| 🟡 | In progress |
| ⬜ | Not started |
| 📝 | Writeup published |
| — | No writeup planned |
Overall progress
| Difficulty | Labs | Done | % |
|---|---|---|---|
| Apprentice | 36 | 0 | 0% |
| Practitioner | 97 | 0 | 0% |
| Expert | 19 | 0 | 0% |
| Total | 152 | 0 | 0% |
1. SQL Injection — 0 / 18
2. Cross-Site Scripting (XSS) — 0 / 30
3. CSRF — 0 / 12
4. Clickjacking — 0 / 5
5. DOM-based Vulnerabilities — 0 / 7
6. CORS — 0 / 3
| Lab | Status | Writeup |
|---|---|---|
| CORS vulnerability with basic origin reflection | ⬜ | — |
| CORS vulnerability with trusted null origin | ⬜ | — |
| CORS vulnerability with trusted insecure protocols | ⬜ | — |
7. XXE Injection — 0 / 9
8. SSRF — 0 / 7
9. HTTP Request Smuggling — 0 / 22
10. OS Command Injection — 0 / 5
11. Server-Side Template Injection — 0 / 7
12. Path Traversal — 0 / 6
13. Access Control — 0 / 13
14. Authentication — 0 / 14
15. WebSockets — 0 / 3
| Lab | Status | Writeup |
|---|---|---|
| Manipulating WebSocket messages to exploit vulnerabilities | ⬜ | — |
| Cross-site WebSocket hijacking | ⬜ | — |
| Manipulating the WebSocket handshake to exploit vulnerabilities | ⬜ | — |
16. Web Cache Poisoning — 0 / 13
17. Insecure Deserialization — 0 / 10
18. Information Disclosure — 0 / 5
19. Business Logic — 0 / 12
20. HTTP Host Header Attacks — 0 / 7
21. OAuth Authentication — 0 / 6
22. File Upload Vulnerabilities — 0 / 7
23. JWT Attacks — 0 / 8
24. Essential Skills — 0 / 2
| Lab | Status | Writeup |
|---|---|---|
| Discovering vulnerabilities quickly with targeted scanning | ⬜ | — |
| Scanning non-standard data structures | ⬜ | — |
25. Prototype Pollution — 0 / 10
26. GraphQL API Vulnerabilities — 0 / 5
27. Race Conditions — 0 / 6
28. NoSQL Injection — 0 / 4
29. API Testing — 0 / 5
30. Web LLM Attacks — 0 / 8
31. Web Cache Deception — 0 / 5
Last updated: 2026-04-20. Lab data and ordering follow onyxwizard/portswigger-academy under MIT License.
This post is licensed under
CC BY 4.0
by the author.