Lion Cipher Lab

Exploit and fix HTTP parameter pollution in your own lab

Why it matters

Most web bugs the world worries about — SQL injection, XSS — are about smuggling a payload into a place that executes it. HTTP parameter pollution is sneakier and, once you see it, alarmingly common: it needs no exotic payload at all, just the same ordinary parameter sent twice. It works because the web is a chain of components — a WAF, a load balancer, the application framework, a backend microservice — and nobody ever agreed on what a request with two 'amount' values or two 'role' values means. One component reads the first copy and says 'looks fine'; the next reads the last copy and acts…

What you'll learn

Steps in this lab

  1. From zero: what HTTP parameter pollution is
  2. Set up: a Python virtual environment with Flask
  3. Build the deliberately-vulnerable app
  4. Exploit it: measure the BEFORE state with curl
  5. Fix it: canonicalize parameter handling, then measure the AFTER state
  6. The honest limits: one handler fixed is not one stack fixed

Open the full interactive lab →