
Ein Repository zum Erlernen verschiedener Heap-Exploitation-Techniken.
Dieses Repo dient dem Erlernen verschiedener Heap-Exploitation-Techniken.
Wir verwenden die Libc-Releases von Ubuntu als Goldstandard. Jede Technik ist darauf geprüft, dass sie auf den entsprechenden Ubuntu-Releases funktioniert.
Du kannst apt source libc6 ausführen, um den Quellcode der Libc herunterzuladen, die du auf einem Debian-basierten Betriebssystem verwendest. Du kannst auch auf ▶️ klicken, um die Technik in deinem Browser mit gdb zu debuggen.
Die Idee entstand während eines Hack-Meetings, und wir haben die folgenden Techniken implementiert:
| Datei | ▶️ | Technik | Glibc-Version | Patch | Anwendbare CTF-Challenges |
|---|---|---|---|---|---|
| first_fit.c | Demonstriert das First-Fit-Verhalten von glibc malloc. | ||||
| calc_tcache_idx.c | Demonstriert die Berechnung des tcache-Index in glibc. | ||||
| fastbin_dup.c | ▶️ | Überlistet malloc, sodass es einen bereits allozierten Heap-Zeiger zurückgibt, indem die Fastbin-Freelist ausgenutzt wird. | < 2.43 | patch | |
| fastbin_dup_into_stack.c | ▶️ | Überlistet malloc, sodass es einen nahezu beliebigen Zeiger zurückgibt, indem die Fastbin-Freelist ausgenutzt wird. | < 2.43 | patch | 9447-search-engine, 0ctf 2017-babyheap |
| fastbin_dup_consolidate.c | ▶️ | Überlistet malloc, sodass es einen bereits allozierten Heap-Zeiger zurückgibt, indem ein Zeiger sowohl auf die Fastbin-Freelist als auch auf den Top-Chunk gesetzt wird. | < 2.43 | patch | Hitcon 2016 SleepyHolder |
| unsafe_unlink.c | ▶️ | Nutzt free auf einem manipulierten Chunk aus, um einen beliebigen Schreibzugriff zu erlangen. | latest | HITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots | |
| house_of_spirit.c | ▶️ | Gibt einen gefälschten Fastbin-Chunk frei, damit malloc einen nahezu beliebigen Zeiger zurückgibt. | latest | hack.lu CTF 2014-OREO | |
| poison_null_byte.c | ▶️ | Nutzt einen einzelnen Null-Byte-Überlauf aus. | latest | PlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote | |
| house_of_lore.c | ▶️ | Überlistet malloc, sodass es einen nahezu beliebigen Zeiger zurückgibt, indem die Smallbin-Freelist ausgenutzt wird. | latest | ||
| overlapping_chunks.c | ▶️ | Ausnutzen des Überschreibens der Größe eines freigegebenen Chunks im Unsorted Bin, um eine neue Allokation mit einem bestehenden Chunk überlappen zu lassen | < 2.29 | patch | hack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap |
| overlapping_chunks_2.c | ▶️ | Ausnutzen des Überschreibens der Größe eines in Benutzung befindlichen Chunks, um eine neue Allokation mit einem bestehenden Chunk überlappen zu lassen | < 2.29 | patch | |
| mmap_overlapping_chunks.c | Ausnutzen eines in Benutzung befindlichen mmap-Chunks, um eine neue Allokation mit einem aktuellen mmap-Chunk überlappen zu lassen | latest | |||
| house_of_force.c | ▶️ | Ausnutzen des Top-Chunk-(Wilderness-)Headers, um malloc dazu zu bringen, einen nahezu beliebigen Zeiger zurückzugeben | < 2.29 | patch | Boston Key Party 2016-cookbook, BCTF 2016-bcloud |