# Tcache Bin Aanval
Leer AWS hak 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 van 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 PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## Basiese Inligting Vir meer inligting oor wat 'n Tcache-bin is, kyk na hierdie bladsy: {% content-ref url="bins-and-memory-allocations.md" %} [bins-and-memory-allocations.md](bins-and-memory-allocations.md) {% endcontent-ref %} Eerstens, let daarop dat die Tcache in Glibc weergawe 2.26 ingevoer is. Die **Tcache-aanval** (ook bekend as **Tcache-vergiftiging**) voorgestel in die [**guyinatuxido-bladsy**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) is baie soortgelyk aan die vinnige bin-aanval waar die doel is om die wyser na die volgende blok in die bin binne 'n vrygemaakte blok te oorskryf na 'n arbitrêre adres sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik wysers te oorskryf. Tans, as jy die genoemde kode hardloop, sal jy die fout kry: **`malloc(): unaligned tcache chunk detected`**. Dus, dit is nodig om 'n uitgelyste adres in die nuwe wyser 'n uitgelyste adres te skryf (of genoeg keer die binêre uit te voer sodat die geskrewe adres eintlik uitgelyst is). ### Tcache indeksaanval Gewoonlik is dit moontlik om aan die begin van die heap 'n blok te vind wat die **hoeveelheid blokke per indeks** binne die tcache bevat en die adres na die **hoofblok van elke tcache-indeks**. As dit om een of ander rede moontlik is om hierdie inligting te wysig, sou dit moontlik wees om **die hoofblok van 'n sekere indeks na 'n gewenste adres te laat wys** (soos `__malloc_hook`) sodat 'n blok van die grootte van die indeks toegewys kan word en die inhoud van `__malloc_hook` in hierdie geval oorskryf kan word. ## Voorbeelde * CTF [https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html](https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html) * **Libc inligtingslek**: Dit is moontlik om die tcaches te vul, 'n blok by die ongesorteerde lys te voeg, die tcache leeg te maak en die blok van die ongesorteerde bin te **herallokeer** deur slegs die eerste 8B te oorskryf, waar die **tweede adres na libc van die blok ongeskonde bly sodat ons dit kan lees**. * **Tcache-aanval**: Die binêre is kwesbaar vir 'n 1B-heap-oorvloei. Dit sal misbruik word om die **grootte-kop** van 'n toegewysde blok te verander om dit groter te maak. Dan sal hierdie blok **vrygemaak** word, dit by die tcache van blokke van die valse grootte voeg. Dan sal ons 'n blok met die vervalste grootte toewys, en die vorige blok sal **teruggegee word met die wete dat hierdie blok eintlik kleiner was** en dit bied die geleentheid om **die volgende blok in die geheue te oorskryf**.\ Ons sal dit misbruik om **die FD-wyser van die volgende blok te oorskryf** om te wys na **`malloc_hook`**, sodat dit moontlik is om 2 wysers toe te ken: eerste die regte wyser wat ons net gewysig het, en dan sal die tweede toekenning 'n blok in **`malloc_hook`** teruggee wat dit moontlik is om te misbruik om 'n **een gadget** te skryf. * CTF [https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html](https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html) * **Libc inligtingslek**: Daar is 'n gebruik na vry en 'n dubbele vry. In hierdie skrywe het die skrywer 'n adres van libc gelekte deur die adres van 'n blok in 'n klein bin te lees (soos om dit van die ongesorteerde bin te lek, maar van die klein een) * **Tcache-aanval**: 'n Tcache word uitgevoer deur 'n **dubbele vry**. Dieselfde blok word twee keer vrygemaak, sodat binne die Tcache die blok na homself sal wys. Dan word dit toegewys, sy FD-wyser word gewysig om te wys na die **vry-waarde** en dan word dit weer toegewys sodat die volgende blok in die lys in die vry-waarde sal wees. Dan word dit ook toegewys en dit is moontlik om die adres van `system` hier te skryf sodat wanneer 'n malloc wat `"/bin/sh"` bevat, vrygemaak word, kry ons 'n skul. * CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html) * Die hoofkwesbaarheid hier is die vermoë om enige adres in die heap te `vry` deur sy offset aan te dui * **Tcache-indeksaanvalle**: Dit is moontlik om 'n blok van 'n grootte toe te ken en vry te maak wat wanneer dit binne die tcache-blok gestoor word (die blok met die inligting van die tcache-binne) 'n **adres met die waarde 0x100** sal genereer. Dit is omdat die tcache die hoeveelheid blokke in elke bin in verskillende bytes stoor, daarom genereer een blok in een spesifieke indeks die waarde 0x100. * Dan lyk hierdie waarde asof daar 'n blok van grootte 0x100 is. Dit maak dit moontlik om dit te misbruik deur hierdie adres te `vry`. Dit sal **daardie adres by die indeks van blokke van grootte 0x100 in die tcache voeg**. * Dan, **'n blok van grootte 0x100 toewys**, sal die vorige adres as 'n blok teruggee, wat dit moontlik maak om ander tcache-indekse te oorskryf.\ Byvoorbeeld om die adres van malloc hook in een van hulle te plaas en 'n blok van die grootte van daardie indeks toe te ken, sal 'n blok in calloc hook gee, wat dit moontlik maak om 'n een gadget te skryf om 'n s-skulp te kry. * CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html) * Dieselfde kwesbaarheid as voorheen met een ekstra beperking * **Tcache-indeksaanvalle**: Soortgelyke aanval as die vorige een maar met minder stappe deur **die blok wat die tcache-inligting bevat vry te maak** sodat sy adres by die tcache-indeks van sy grootte gevoeg word sodat dit moontlik is om daardie grootte toe te ken en die tcache-blok inligting as 'n blok te kry, wat dit moontlik maak om die vry-waarde as die adres van een indeks by te voeg, dit toe te ken, en 'n een gadget daarop te skryf. * [**Math Door. HTB Cyber Apocalypse CTF 2023**](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/math-door/) * **Skryf Na Vry** om 'n nommer by die `fd`-wyser te voeg. * Baie **heap feng-shui** is nodig in hierdie uitdaging. Die skrywe wys hoe **die beheer van die kop van die Tcache vry-lys baie handig is**. * **Glibc-lek** deur `stdout` (FSOP). * **Tcache-vergiftiging** om 'n arbitrêre skryfprimitief te kry. * **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 hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.