Heap Overflow — Débordement sur le tas
★★★★★
Différence Stack vs Heap
Le heap (tas) est une zone mémoire allouée dynamiquement (malloc/new). Un débordement sur le heap écrase les métadonnées des chunks adjacents plutôt que les adresses de retour. La glibc gère le heap via des structures complexes (bins, tcache) qui peuvent être manipulées.
Structure d'un chunk malloc
/* En-tête d un chunk (glibc) */
struct malloc_chunk {
size_t prev_size; /* taille chunk précédent (si libre) */
size_t size; /* taille de ce chunk + flags */
/* Quand libre : */
struct malloc_chunk *fd; /* pointeur chunk libre suivant */
struct malloc_chunk *bk; /* pointeur chunk libre précédent */
};
/* Inspecter dans GDB/pwndbg */
heap
chunk 0x5555000
vis /* vue graphique */