
Un repositorio para aprender diversas técnicas de explotación del heap.
Este repositorio es para aprender diversas técnicas de explotación del heap.
Usamos los lanzamientos de Libc de Ubuntu como el estándar de oro. Cada técnica está verificada para funcionar en las correspondientes versiones de Ubuntu.
Puedes ejecutar apt source libc6 para descargar el código fuente de la Libc que estás usando en un sistema operativo basado en Debian. También puedes hacer clic en ▶️ para depurar la técnica en tu navegador usando gdb.
Se nos ocurrió la idea durante una reunión de hackers, y hemos implementado las siguientes técnicas:
| Archivo | ▶️ | Técnica | Versión de Glibc | Parche | Desafíos CTF aplicables |
|---|---|---|---|---|---|
| first_fit.c | Demostración del comportamiento first-fit de malloc de glibc. | ||||
| calc_tcache_idx.c | Demostración del cálculo del índice de tcache de glibc. | ||||
| fastbin_dup.c | ▶️ | Engañar a malloc para que devuelva un puntero de heap ya asignado abusando de la lista libre de fastbin. | < 2.43 | parche | |
| fastbin_dup_into_stack.c | ▶️ | Engañar a malloc para que devuelva un puntero casi arbitrario abusando de la lista libre de fastbin. | < 2.43 | parche | 9447-search-engine, 0ctf 2017-babyheap |
| fastbin_dup_consolidate.c | ▶️ | Engañar a malloc para que devuelva un puntero de heap ya asignado colocando un puntero tanto en la lista libre de fastbin como en el top chunk. | < 2.43 | parche | Hitcon 2016 SleepyHolder |
| unsafe_unlink.c | ▶️ | Explotar free sobre un chunk corrupto para obtener escritura arbitraria. | latest | HITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots | |
| house_of_spirit.c | ▶️ | Libera un chunk fastbin falso para lograr que malloc devuelva un puntero casi arbitrario. | latest | hack.lu CTF 2014-OREO | |
| poison_null_byte.c | ▶️ | Explotar un desbordamiento de un solo byte nulo. | latest | PlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote | |
| house_of_lore.c | ▶️ | Engañar a malloc para que devuelva un puntero casi arbitrario abusando de la lista libre de smallbin. | latest | ||
| overlapping_chunks.c | ▶️ | Explotar la sobrescritura del tamaño de un chunk liberado en el unsorted bin para conseguir que una nueva asignación se solape con un chunk existente | < 2.29 | parche | hack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap |
| overlapping_chunks_2.c | ▶️ | Explotar la sobrescritura del tamaño de un chunk en uso para conseguir que una nueva asignación se solape con un chunk existente | < 2.29 | parche | |
| mmap_overlapping_chunks.c | Explotar un chunk mmap en uso para conseguir que una nueva asignación se solape con un chunk mmap actual | latest | |||
| house_of_force.c | ▶️ | Explotar el encabezado del Top Chunk (Wilderness) para lograr que malloc devuelva un puntero casi arbitrario | < 2.29 | parche | Boston Key Party 2016-cookbook, BCTF 2016-bcloud |
| unsorted_bin_into_stack.c | ▶️ | Explotar la sobrescritura de un chunk liberado en la lista libre de unsorted bin para devolver un puntero casi arbitrario. | < 2.29 | parche |