Lion Cipher Lab

Fuzz a buggy parser with AFL++ and watch it find the crash

Why it matters

A huge share of the worst security bugs — the memory-corruption ones behind remote code execution — live in code that parses untrusted input: file formats, network packets, config blobs. You cannot find those by clicking around or reading the code once; the triggering input is some specific byte pattern no human would think to type. A coverage-guided fuzzer finds them for you: it mutates inputs, watches which new code each mutation reaches, and keeps the mutations that explore deeper, drilling automatically toward the corner that crashes. Doing this once — seeing a crash fall out of a program…

What you'll learn

Steps in this lab

  1. What 'coverage-guided fuzzing' actually means
  2. When you'd reach for this — and when you would not
  3. Start the AFL++ container
  4. Write the deliberately-buggy parser
  5. Compile it WITH instrumentation using afl-cc
  6. Give it a seed and start fuzzing
  7. Triage the crash — reproduce it and read the input
  8. When it does NOT help — magic gates and closed blobs
  9. The way a pro runs this differently

Open the full interactive lab →