
Un repository per apprendere varie tecniche di sfruttamento dell'heap.
Questa repository serve per apprendere varie tecniche di exploitation dell'heap.
Usiamo le release della Libc di Ubuntu come standard di riferimento. Ogni tecnica è verificata per funzionare sulle corrispondenti release di Ubuntu.
Puoi eseguire apt source libc6 per scaricare il codice sorgente della Libc che stai usando su un sistema operativo basato su Debian. Puoi anche fare clic su ▶️ per eseguire il debug della tecnica nel tuo browser usando gdb.
L'idea è nata durante un hack meeting e abbiamo implementato le seguenti tecniche:
| File | ▶️ | Tecnica | Versione Glibc | Patch | Sfide CTF Applicabili |
|---|---|---|---|---|---|
| first_fit.c | Dimostra il comportamento first-fit di malloc in glibc. | ||||
| calc_tcache_idx.c | Dimostrare il calcolo dell'indice tcache di glibc. | ||||
| fastbin_dup.c | ▶️ | Indurre malloc a restituire un puntatore heap già allocato abusando della freelist fastbin. | < 2.43 | patch | |
| fastbin_dup_into_stack.c | ▶️ | Indurre malloc a restituire un puntatore quasi arbitrario abusando della freelist fastbin. | < 2.43 | patch | 9447-search-engine, 0ctf 2017-babyheap |
| fastbin_dup_consolidate.c | ▶️ | Indurre malloc a restituire un puntatore heap già allocato inserendo un puntatore sia nella freelist fastbin che nella top chunk. | < 2.43 | patch | Hitcon 2016 SleepyHolder |
| unsafe_unlink.c | ▶️ | Sfruttare la free su una chunk corrotta per ottenere scrittura arbitraria. | latest | HITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots | |
| house_of_spirit.c | ▶️ | Eseguire la free di una fake chunk fastbin per ottenere da malloc un puntatore quasi arbitrario. | latest | hack.lu CTF 2014-OREO | |
| poison_null_byte.c | ▶️ | Sfruttare un overflow di un singolo byte nullo. | latest | PlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote | |
| house_of_lore.c | ▶️ | Indurre malloc a restituire un puntatore quasi arbitrario abusando della freelist smallbin. | latest | ||
| overlapping_chunks.c | ▶️ | Sfruttare la sovrascrittura della dimensione di una chunk liberata nella unsorted bin per fare in modo che una nuova allocazione si sovrapponga a una chunk esistente | < 2.29 | patch | hack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap |
| overlapping_chunks_2.c | ▶️ | Sfruttare la sovrascrittura della dimensione di una chunk in uso per fare in modo che una nuova allocazione si sovrapponga a una chunk esistente | < 2.29 | patch | |
| mmap_overlapping_chunks.c | Sfruttare una chunk mmap in uso per fare in modo che una nuova allocazione si sovrapponga a una chunk mmap corrente | latest | |||
| house_of_force.c | ▶️ | Sfruttare l'header della Top Chunk (Wilderness) per ottenere da malloc un puntatore quasi arbitrario | < 2.29 | patch | Boston Key Party 2016-cookbook, BCTF 2016-bcloud |
| unsorted_bin_into_stack.c | ▶️ | Sfruttare la sovrascrittura di una chunk liberata nella freelist della unsorted bin per ottenere un puntatore quasi arbitrario. | < 2.29 | patch |