
Un dépôt pour apprendre diverses techniques d'exploitation du tas.
Ce dépôt sert à apprendre diverses techniques d'exploitation du tas.
Nous utilisons les versions de la Libc d'Ubuntu comme étalon-or. Chaque technique est vérifiée pour fonctionner sur les versions d'Ubuntu correspondantes.
Vous pouvez exécuter apt source libc6 pour télécharger le code source de la Libc que vous utilisez sur un système d'exploitation basé sur Debian. Vous pouvez également cliquer sur ▶️ pour déboguer la technique dans votre navigateur avec gdb.
L'idée nous est venue lors d'une session de hacking, et nous avons implémenté les techniques suivantes :
| Fichier | ▶️ | Technique | Version de Glibc | Correctif | Défis CTF applicables |
|---|---|---|---|---|---|
| first_fit.c | Démontre le comportement first-fit de malloc de glibc. | ||||
| calc_tcache_idx.c | Démontre le calcul d'index tcache de glibc. | ||||
| fastbin_dup.c | ▶️ | Duper malloc pour qu'il renvoie un pointeur de tas déjà alloué en abusant de la freelist fastbin. | < 2.43 | correctif | |
| fastbin_dup_into_stack.c | ▶️ | Duper malloc pour qu'il renvoie un pointeur presque arbitraire en abusant de la freelist fastbin. | < 2.43 | correctif | 9447-search-engine, 0ctf 2017-babyheap |
| fastbin_dup_consolidate.c | ▶️ | Duper malloc pour qu'il renvoie un pointeur de tas déjà alloué en plaçant un pointeur à la fois dans la freelist fastbin et dans le top chunk. | < 2.43 | correctif | Hitcon 2016 SleepyHolder |
| unsafe_unlink.c | ▶️ | Exploiter le free sur un chunk corrompu pour obtenir une écriture arbitraire. | dernière | HITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots | |
| house_of_spirit.c | ▶️ | Libère un faux chunk fastbin pour que malloc renvoie un pointeur presque arbitraire. | dernière | hack.lu CTF 2014-OREO | |
| poison_null_byte.c | ▶️ | Exploiter un débordement d'un seul octet nul. | dernière | PlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote | |
| house_of_lore.c | ▶️ | Duper malloc pour qu'il renvoie un pointeur presque arbitraire en abusant de la freelist smallbin. | dernière | ||
| overlapping_chunks.c | ▶️ | Exploiter l'écrasement de la taille d'un chunk libéré dans l'unsorted bin afin de faire chevaucher une nouvelle allocation avec un chunk existant | < 2.29 | correctif | hack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap |
| overlapping_chunks_2.c | ▶️ | Exploiter l'écrasement de la taille d'un chunk en cours d'utilisation afin de faire chevaucher une nouvelle allocation avec un chunk existant | < 2.29 | correctif | |
| mmap_overlapping_chunks.c | Exploiter un chunk mmap en cours d'utilisation afin de faire chevaucher une nouvelle allocation avec un chunk mmap actuel | dernière | |||
| house_of_force.c | ▶️ | Exploiter l'en-tête du Top Chunk (Wilderness) afin d'amener malloc à renvoyer un pointeur presque arbitraire | < 2.29 | correctif | Boston Key Party 2016-cookbook, BCTF 2016-bcloud |