
Ein Beispiel-C-Programm, das verwundbaren Code für häufige Arten von Schwachstellen enthält. Es kann verwendet werden, um Fuzzing-Konzepte zu veranschaulichen.
Hinweis: Der Dateiname wurde von imgRead.c in dvcp.c geändert. Wenn du Videos anschaust, wirst du imgRead.c sehen, aber im GitHub-Repo siehst du dvcp.c. Bitte verwende den korrekten Dateinamen.
Mein YouTube-Kanal: https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
Was ist das?
Dies ist ein einfaches C-Programm, das ich geschrieben habe, um häufige Arten von Schwachstellen zu erklären, wie:
Dieses C-Programm enthält verwundbaren Code für alle oben genannten Schwachstellen, und du kannst es mit einem beliebigen Fuzzer wie AFL, libafl, libfuzzer, hongfuzz, winafl, jackalope oder jedem anderen Fuzzer, den du möchtest, fuzzen.
Wie kompiliert man es?
Gib einfach „make" in der Eingabeaufforderung ein. Das Makefile ist enthalten.
Wie erzeugt man Eingaben für AFL?
Erstelle einfach eine Beispiel-Eingabedatei wie folgt, den Rest übernimmt AFL:
echo "IMG" >input/1.txt
AFL erzeugt automatisch neue Testfälle und entdeckt die meisten der oben genannten Schwachstellen. Das ist das Schöne an AFL :)
Wie fuzzt man es mit AFL?
1. Kompiliere dieses Programm zuerst mit dem folgenden Befehl:
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. Führe diesen Befehl aus:
afl-fuzz -i input -o output -m none -- ./dvcp @@
Wie fuzzt man es mit honggfuzz?
1. Kompiliere dieses Programm zuerst mit dem folgenden Befehl:
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. Führe diesen Befehl aus:
hongfuzz -i input -- ./dvcp ___FILE___
Wie fuzzt man mit libfuzzer?
Du musst den C-Code ändern. Den aktualisierten Code findest du hier: https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. Kompiliere das Programm mit dem folgenden Befehl:
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. Führe diesen Befehl zum Fuzzen aus:
./dvcp_libfuzzer
Video-Tutorials findest du hier:
Komplette Fuzzing-Playlist:
https://www.youtube.com/watch?v=r7ucv2kN4j4&list=PLHGgqcJIME5kYhOSdJjvtVS4b4_OXDqM-
Einzelne Videos unten:
Linux
LibAFL
[Fuzzing mit libAFL] Wie installiere ich libAFL auf dem System und was sind die verschiedenen Komponenten? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[Fuzzing mit libAFL] Einführung in den libAFL-ForkServer, Ausführen des libAFL-Forkserver-Fuzzers. -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[Fuzzing mit libAFL] Fuzzing des Damn Vulnerable C Program mit dem libAFL-Forkserver-Fuzzer -> https://www.youtube.com/watch?v=ad_4zroiS_g
[Fuzzing mit libAFL] Verwendung des Shared-Memory-Modus mit dem libAFL-Forkserver-Fuzzer -> https://www.youtube.com/watch?v=GXD_qkISyfY
AFL++
[Fuzzing mit AFLplusplus] Installieren von AFLPlusplus und Fuzzing eines einfachen C-Programms -> https://www.youtube.com/watch?v=9wRVo0kYSlc
[Fuzzing mit AFLplusplus] Wie man unter Linux eine Binärdatei ohne Quellcode im persistenten Modus fuzzt -> https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[Fuzzing mit AFL] Wie installiere ich AFL auf Ubuntu-> https://www.youtube.com/watch?v=r7ucv2kN4j4
[Fuzzing mit AFL] Fuzzing eines einfachen C-Programms mit AFL -> https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[Fuzzing mit AFL] Verschiedene Arten von Schwachstellen mit AFL finden -> https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[Fuzzing mit AFL] Abstürze mit crashwalk analysieren und die Grundursache mit GDB finden -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[Fuzzing mit AFL] Fuzzing einer Binärdatei ohne Quellcode mit AFL im Qemu-Modus.-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[Fuzzing mit honggfuzz] Fuzzing eines einfachen C-Programms mit HongFuzz -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[Fuzzing mit honggfuzz] Hongfuzz,checksec(pwntools),ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[Fuzzing mit libfuzzer] Wie man ein einfaches C-Programm mit LibFuzzer fuzzt -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[Fuzzing mit libfuzzer,AFL] Wie man das libfuzzer-Harness-Programm mit AFL fuzzt -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
Wie man die OpenSSL-Schwachstellen CVE-2022-3602 und CVE-2022-3786 reproduziert und libfuzzer verwendet -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[Fuzzing mit Radamsa] Fuzzing eines einfachen C-Programms mit Radamsa -> https://youtu.be/1FRsXVNpynQ
Windows
WinAFL
[Fuzzing mit WinAFL] Fuzzing eines einfachen C-Programms mit WinAFL -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[Fuzzing mit WinAFL] Was ist eine Fuzzing-Funktion und wie stellt man sicher, dass alles einwandfrei funktioniert? -> https://www.youtube.com/watch?v=HLORLsNnPzo
Ich brauche mehr Windows-Harnesses, um mit winafl zu fuzzen
Klar, schau hier -> https://github.com/hardik05/winafl-harness
Ich möchte etwas anderes ausprobieren, vielleicht ein paar andere Mutatoren als die Standard-Mutatoren von winafl..
Ja, du kannst das hier ausprobieren -> https://github.com/hardik05/winafl-powermopt
Mehr wird hochgeladen, sobald ich es erstelle.
OSS-Fuzz von Google
Wie OSS-Fuzz funktioniert: Ein Leitfaden zum Fuzz-Testen für Open-Source-Projekte -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
Warum hast du das erstellt?
Es braucht viel Zeit, bis Neueinsteiger und sogar erfahrene Personen die verschiedenen Arten von Schwachstellen verstehen. Ich bin selbst auf dieses Problem gestoßen und habe beschlossen, das zu teilen, was ich gelernt habe.
Wenn du etwas daraus lernst, schick mir eine Dankesnachricht. Das ist alles, was ich brauche. Wenn du außerdem etwas verbessern oder korrigieren möchtest, sind Pull Requests willkommen!
Autor?
Twitter: https://twitter.com/hardik05
E-Mail: Schreib mir eine DM auf Twitter :)
Web: http://hardik05.wordpress.com
Feedback?
Vorschläge und Kommentare sind immer willkommen. Wenn du ein Problem findest, eine Korrektur hast oder eine neue Funktion wünschst, sende einen Pull-Request.