
Un exemple de programme C contenant du code vulnérable pour des types courants de vulnérabilités. Il peut être utilisé pour illustrer les concepts de fuzzing.
Remarque : le nom du fichier a été changé de imgRead.c à dvcp.c. Si vous regardez des vidéos, vous verrez imgRead.c, mais dans le dépôt GitHub vous verrez dvcp.c. Veuillez utiliser le nom de fichier correct.
Ma chaîne YouTube : https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
Qu'est-ce que c'est ?
C'est un programme C simple que j'ai codé pour expliquer les types courants de vulnérabilités comme :
Ce programme C contient du code vulnérable pour toutes les vulnérabilités ci-dessus et vous pouvez le fuzzer avec n'importe quel fuzzer comme AFL, libafl, libfuzzer, hongfuzz, winafl, jackalope ou tout autre fuzzer de votre choix.
Comment compiler
Tapez simplement "make" dans l'invite de commande. Le Makefile est inclus.
Comment générer une entrée pour AFL ?
créez simplement un fichier d'entrée d'exemple comme suit et AFL s'occupera du reste :
echo "IMG" >input/1.txt
AFL générera automatiquement de nouveaux cas de test et découvrira la plupart des vulnérabilités mentionnées ci-dessus. C'est la beauté d'AFL :)
Comment le fuzzer avec AFL ?
1. Compilez d'abord ce programme avec la commande suivante :
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. exécutez cette commande :
afl-fuzz -i input -o output -m none -- ./dvcp @@
Comment le fuzzer avec honggfuzz
1. Compilez d'abord ce programme avec la commande suivante :
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. exécutez cette commande :
hongfuzz -i input -- ./dvcp ___FILE___
Comment fuzzer avec libfuzzer
Vous devez modifier le code C, vous pouvez obtenir le code mis à jour ici : https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. Compilez le programme avec la commande suivante :
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. exécutez cette commande pour fuzzer :
./dvcp_libfuzzer
Vous pouvez voir les tutoriels vidéo ici :
Playlist complète de fuzzing :
vidéos individuelles ci-dessous :
Linux
LibAFL
[Fuzzing avec libAFL]Comment installer libAFL sur le système et quels sont les différents composants ? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[Fuzzing avec libAFL]Introduction à libAFL ForkSever, exécution du fuzzer forkserver libAFL. -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[Fuzzing avec libAFL]Fuzzing de Damn Vulnerable C Program avec le fuzzer forkserver libAFL -> https://www.youtube.com/watch?v=ad_4zroiS_g
[Fuzzing avec libAFL] Utilisation du mode mémoire partagée avec le fuzzer forkserver libAFL -> https://www.youtube.com/watch?v=GXD_qkISyfY
AFL++
[Fuzzing avec AFLplusplus] Installation d'AFLPlusplus et fuzzing d'un programme C simple -> https://www.youtube.com/watch?v=9wRVo0kYSlc
[Fuzzing avec AFLplusplus] Comment fuzzer un binaire sans code source sous Linux en mode persistant -> https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[Fuzzing avec AFL] Comment installer AFL sur Ubuntu-> https://www.youtube.com/watch?v=r7ucv2kN4j4
[Fuzzing avec AFL] Fuzzing d'un programme C simple avec AFL -> https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[Fuzzing avec AFL] Trouver différents types de vulnérabilités avec AFL -> https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[Fuzzing avec AFL] Triage des crashes avec crashwalk et recherche de la cause racine avec GDB -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[Fuzzing avec AFL] Fuzzing d'un binaire sans code source avec AFL en mode Qemu.-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[Fuzzing avec honggfuzz] Fuzzing d'un programme C simple avec HongFuzz -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[Fuzzing avec honggfuzz] Hongfuzz,checksec(pwntools),ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[Fuzzing avec libfuzzer] Comment fuzzer un programme C simple avec LibFuzzer -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[Fuzzing avec libfuzzer,AFL] Comment fuzzer le programme harnais de libfuzzer avec AFL -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
Comment reproduire les vulnérabilités OpenSSL CVE-2022-3602 et CVE-2022-3786 et utiliser libfuzzer -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[Fuzzing avec Radamsa] Fuzzing d'un programme C simple avec Radamsa -> https://youtu.be/1FRsXVNpynQ
Windows
WinAFL
[Fuzzing avec WinAFL] Fuzzing d'un programme C simple avec WinAFL -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[Fuzzing avec WinAFL] Qu'est-ce qu'une fonction de fuzzing, comment s'assurer que tout fonctionne correctement ? -> https://www.youtube.com/watch?v=HLORLsNnPzo
J'ai besoin de plus de harnais Windows pour fuzzer avec winafl
bien sûr, regardez ici -> https://github.com/hardik05/winafl-harness
je veux essayer quelque chose de différent, peut-être des mutateurs différents de ceux par défaut de winafl..
oui, vous pouvez essayer ceci -> https://github.com/hardik05/winafl-powermopt
d'autres seront mis en ligne au fur et à mesure que je les créerai.
OSS-Fuzz de Google
Comment fonctionne OSS-Fuzz : un guide du fuzzing pour les projets open source -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
Pourquoi avez-vous créé cela ?
Il faut beaucoup de temps aux nouveaux venus et même aux personnes expérimentées pour comprendre les différents types de vulnérabilités. J'ai moi-même rencontré ce problème et j'ai décidé de partager ce que j'ai appris.
Si vous apprenez quelque chose de cela, envoyez-moi un mot de remerciement. C'est tout ce dont j'ai besoin. Si vous voulez améliorer ou corriger quelque chose, les PR sont les bienvenues !
Auteur ?
Twitter : https://twitter.com/hardik05
E-mail : envoyez-moi un message privé sur Twitter :)
Commentaires ?
Les suggestions et les commentaires sont toujours les bienvenus. Si vous trouvez un problème ou si vous avez un correctif ou une nouvelle fonctionnalité, envoyez une pull request.