House of Force — Corruption du top chunk
★★★★★
Principe
La House of Force écrase la taille du top chunk (wilderness) avec une très grande valeur, de sorte qu'une allocation contrôlée déplace le top chunk vers une adresse arbitraire — donnant une écriture arbitraire au malloc suivant.
Étapes
# 1. Overflow -> écraser top->size par 0xffffffffffffffff
# 2. malloc(target - top - 0x20) deplace le top vers 'target'
# (taille = distance, calcul signé)
# 3. malloc(n) renvoie un chunk à 'target' -> write-what-where
evil_size = target - top_addr - 0x20
malloc(evil_size); p = malloc(0x10) # p == target Obsolescence
Mitigée depuis glibc 2.29 : un check vérifie que la taille demandée ne dépasse pas la taille du top chunk. Reste un classique pédagogique pour comprendre la mécanique du heap glibc.