antonio-morales/Fuzzing101
antonio-morales/Fuzzing101 has 3,928 GitHub stars and 433 forks. GitHot measured +5 in 7 days. Last checked 2026-11-06 17:06 UTC. Last push 2026-06-16.
단계별 퍼징 튜토리얼입니다. GitHub Security Lab의 이니셔티브입니다.
측정된 스타 증가
- in 24h
- 업데이트 지연
- in 7 days
- +5
- in 15 days
- 업데이트 지연
- in 1 month
- 업데이트 지연
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
OriginalFuzzing-101
Do you want to learn how to fuzz like a real expert, but don't know how to start?
If so, this is the course for you!
10 real targets, 10 exercises. Are you able to solve all 10?
Structure
| Exercise No. | Target | CVEs to find | Time estimated | Main topics |
|---|---|---|---|---|
| Exercise 1 | Xpdf | CVE-2019-13288 | 120 mins | Afl-clang-fast, Afl-fuzz, GDB |
| Exercise 2 | libexif | CVE-2009-3895, CVE-2012-2836 | 6 hours | Afl-clang-lto, Fuzz libraries, Eclipse IDE |
| Exercise 3 | TCPdump | CVE-2017-13028 | 4 hours | ASan, Sanitizers |
| Exercise 4 | LibTIFF | CVE-2016-9297 | 3 hours | Code coverage, LCOV |
| Exercise 5 | Libxml2 | CVE-2017-9048 | 3 hours | Dictionaries, Basic parallelization, Fuzzing command-line arguments |
| Exercise 6 | GIMP | CVE-2016-4994, Bonus bugs | 7 hours | Persistent fuzzing, Fuzzing interactive applications |
| Exercise 7 | VLC media player | CVE-2019-14776 | 6 hours | Partial instrumentation, Fuzzing harness |
| Exercise 8 | Adobe Reader | 8 hours | Fuzzing closed-source applications, QEMU instrumentation | |
| Exercise 9 | 7-Zip | CVE-2016-2334 | 8 hours | WinAFL, Fuzzing Windows Applications |
| Exercise 10 (Final Challenge) | Google Chrome / V8 | CVE-2019-5847 | 8 hours | Fuzzilli, Fuzzing Javascript engines |
Changelog
- 02/14/2022: Fixed some 'wget' typos in Exercise 5
- 11/25/2021: Exercise 3 updated with some fixes.
Who is the course intended for?
- Anyone wishing to learn fuzzing basics
- Anyone who wants to learn how to find vulnerabilities in real software projects.
Requirements
- All you need for this course is a running Linux system with an internet connection. You will find a suitable VMware image in the exercises.
- At least basic Linux skills are highly recommended.
- All the exercises have been tested on Ubuntu 20.04.2 LTS. You can download it from here
- In this course we're going to use AFL++, a newer and superior fork of Michał "lcamtuf" Zalewski's AFL, for solving the fuzzing exercises.
What is fuzzing?
Fuzz testing (or fuzzing) is an automated software testing technique that is based on feeding the program with random/mutated input values and monitoring it for exceptions/crashes.
AFL, libFuzzer and HonggFuzz are three of the most successful fuzzers when it comes to real world applications. All three are examples of Coverage-guided evolutionary fuzzers.
Coverage-guided evolutionary fuzzer
Evolutionary: is a metaheuristic approach inspired by evolutionary algorithms, which basically consists in the evolution and mutation of the initial subset (seeds) over time, by using a selection criteria (ex. coverage).
Coverage-guided: To increase the chance of finding new crashes, coverage-guided fuzzers gather and compare code coverage data between different inputs (usually through instrumentation) and pick those inputs which lead to new execution paths.

Simplification of the coverage gathering process of a coverage-guided evolutionary fuzzer
Thanks
Thanks for their help:
관련 프로젝트 살펴보기
sindresorhus/awesome
😎 온갖 흥미로운 주제에 관한 Awesome 목록 [참고: 기존 풀 리퀘스트를 따라잡을 여유가 생길 때까지 풀 리퀘스트가 일시적으로 비활성화되어 있습니다]
532,839 스타EbookFoundation/free-programming-books
:books: 무료로 이용할 수 있는 프로그래밍 도서
401,186 스타nilbuild/developer-roadmap
개발자의 커리어 성장을 돕는 인터랙티브 로드맵, 가이드 및 기타 교육 콘텐츠.
371,457 스타vinta/awesome-python
“Python으로 X를 하고 싶은데, 어떤 도구를 써야 할까?”에 답하는 결정판 목록.
333,119 스타