offensive-fuzzing-course

Guides coverage-guided fuzzing campaigns with AFL++, libFuzzer, FuzzTest, and Honggfuzz including crash triage.

Updated Sep 23, 2026
One-click install
npx skills add https://github.com/ehadziabdic/WAgents --skill offensive-fuzzing-course-ehadziabdic
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: offensive-fuzzing-course
Source: https://github.com/ehadziabdic/WAgents/tree/main/opencode/skills/offensive-fuzzing-course
Command: npx skills add https://github.com/ehadziabdic/WAgents --skill offensive-fuzzing-course-ehadziabdic

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Security researchers and exploit developers need a structured methodology for discovering memory corruption vulnerabilities through fuzzing, but setting up effective campaigns with proper harnesses, seed corpora, sanitizers, and crash triage is complex and error-prone. ## Core Features & Use Cases - Coverage-Guided Fuzzing Setup: Step-by-step instructions for building targets with AFL++ instrumentation, AddressSanitizer, and UBSan, including parallel master/slave fuzzing configurations. - Corpus and Harness Engineering: Guidance on seed corpus collection, minimization with afl-cmin and afl-tmin, dictionary-based fuzzing, and writing fuzz harnesses for parsers. - Crash Triage and Deduplication: Workflows for minimizing crashing inputs, clustering crashes with casr-afl, and analyzing exploitability with GDB/GEF. - Use Case: A researcher fuzzing a media parser like GStreamer's qtdemux can follow the methodology to build an AFL++ plus ASan instrumented binary, generate a structured MP4 seed corpus, run a multi-day campaign, and triage the resulting heap buffer overflow crashes. ## Quick Start Ask the agent to walk you through setting up an AFL++ fuzzing campaign against a C parser target, from instrumentation through crash triage.

Frequently Asked Questions about offensive-fuzzing-course

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up AFL++ fuzzing on a C program?▼

Install LLVM and build AFL++ from source, then compile your target with afl-clang-fast to add instrumentation. Create a seed corpus, set the core pattern with echo core, and run afl-fuzz with -i for inputs and -o for findings.

What is the difference between AFL++ and libFuzzer?▼

AFL++ fuzzes whole programs as separate processes using file-based inputs, while libFuzzer runs in-process against a specific function harness. AFL++ suits black-box binaries; libFuzzer and FuzzTest are faster for library code where you control the source.

How do I triage and deduplicate fuzzing crashes?▼

Minimize each crashing input with afl-tmin while preserving the crash, then cluster crashes with casr-afl to group unique stack traces. Analyze the minimized cases in GDB with GEF to determine root cause and exploitability.

Why does my fuzzer find no crashes on a target?▼

Real targets often require hours or days of fuzzing before crashes appear. Improve results by using a valid minimized seed corpus, enabling ASan and UBSan, adding a format dictionary, and running parallel master and slave instances.

When should I use Google FuzzTest instead of AFL++?▼

Use FuzzTest when you have C++ source code and want to fuzz individual functions alongside GoogleTest unit tests. It is ideal for parsers and core logic in CI pipelines, while AFL++ fits whole-program or black-box fuzzing.

Does seed corpus quality affect fuzzing results?▼

Yes, valid diverse seeds let the fuzzer reach deep parsing logic instead of failing early validation. Minimize the corpus with afl-cmin and shrink individual files with afl-tmin to keep coverage while speeding up iterations.