Lion Cipher Lab

Attack and defend a GraphQL API (introspection, resolver authz, and query-shape DoS)

Why it matters

GraphQL is now the shape of a huge share of modern APIs, and it fails in ways REST testing habits completely miss. A REST API is many URLs, one verb each, with a WAF and a rate limiter you can hang off each endpoint. A GraphQL API is the opposite: one endpoint (usually /graphql), one POST, and the client asks for exactly the fields it wants in a single query. That one design choice quietly disables a pile of controls teams assume they still have — per-endpoint rate limits (there is only one endpoint), per-URL WAF rules (every request is the same URL and verb), and 'scan every endpoint'…

What you'll learn

Steps in this lab

  1. The one rule: your machine, your target, nobody else's
  2. The GraphQL shape in one breath — and why REST habits stop working
  3. Stand up your own vulnerable GraphQL target in Docker
  4. Introspection: ask the API for its own blueprint
  5. Field-level authorization: reach data the resolver never protected
  6. Denial of service by query SHAPE: nesting, cycles, and alias amplification
  7. Batching as a brute-force engine: many login attempts, one request
  8. Now defend it: the hardening checklist, mapped to what you just did

Open the full interactive lab →