
Um repositório para aprender várias técnicas de exploração de heap.
Este repositório serve para aprender várias técnicas de exploração de heap.
Usamos as versões do Libc do Ubuntu como padrão-ouro. Cada técnica é verificada para funcionar nas versões correspondentes do Ubuntu.
Você pode executar apt source libc6 para baixar o código-fonte do Libc que está usando em um sistema operacional baseado em Debian. Você também pode clicar em ▶️ para depurar a técnica no seu navegador usando gdb.
Tivemos a ideia durante uma reunião de hackers e implementamos as seguintes técnicas:
| Arquivo | ▶️ | Técnica | Glibc-Version | Patch | Desafios de CTF Aplicáveis |
|---|---|---|---|---|---|
| first_fit.c | Demonstrando o comportamento first-fit do malloc do glibc. | ||||
| calc_tcache_idx.c | Demonstrando o cálculo do índice tcache do glibc. | ||||
| fastbin_dup.c | ▶️ | Enganando o malloc para retornar um ponteiro de heap já alocado, abusando da freelist fastbin. | < 2.43 | patch | |
| fastbin_dup_into_stack.c | ▶️ | Enganando o malloc para retornar um ponteiro quase arbitrário, abusando da freelist fastbin. | < 2.43 | patch | 9447-search-engine, 0ctf 2017-babyheap |
| fastbin_dup_consolidate.c | ▶️ | Enganando o malloc para retornar um ponteiro de heap já alocado ao colocar um ponteiro tanto na freelist fastbin quanto no top chunk. | < 2.43 | patch | Hitcon 2016 SleepyHolder |
| unsafe_unlink.c | ▶️ | Explorando o free em um chunk corrompido para obter escrita arbitrária. | latest | HITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots | |
| house_of_spirit.c | ▶️ | Libera um chunk fastbin falso para fazer o malloc retornar um ponteiro quase arbitrário. | latest | hack.lu CTF 2014-OREO | |
| poison_null_byte.c | ▶️ | Explorando um overflow de um único byte nulo. | latest | PlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote | |
| house_of_lore.c | ▶️ | Enganando o malloc para retornar um ponteiro quase arbitrário, abusando da freelist smallbin. | latest | ||
| overlapping_chunks.c | ▶️ | Explorar a sobrescrita do tamanho de um chunk liberado no unsorted bin para fazer uma nova alocação se sobrepor a um chunk existente | < 2.29 | patch | hack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap |
| overlapping_chunks_2.c | ▶️ | Explorar a sobrescrita do tamanho de um chunk em uso para fazer uma nova alocação se sobrepor a um chunk existente | < 2.29 | patch | |
| mmap_overlapping_chunks.c | Explorar um chunk mmap em uso para fazer uma nova alocação se sobrepor a um chunk mmap atual | latest | |||
| house_of_force.c | ▶️ | Explorando o cabeçalho do Top Chunk (Wilderness) para fazer o malloc retornar um ponteiro quase arbitrário | < 2.29 | patch | Boston Key Party 2016-cookbook, BCTF 2016-bcloud |
| unsorted_bin_into_stack.c | ▶️ | Explorando a sobrescrita de um chunk liberado na freelist do unsorted bin para retornar um ponteiro quase arbitrário. | < 2.29 | patch |