free
Last updated
Last updated
Leer & oefen AWS-hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP-hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
(Geen kontroles word in hierdie opsomming verduidelik en sommige gevalle is weggelaat vir bondigheid)
As die adres nul is, moet niks gedoen word nie
As die blokkie gemap is, moet dit ontmap word en klaarmaak
Roep _int_free
aan:
Voeg die blokkie indien moontlik by die tcache
Voeg die blokkie indien moontlik by die vinnige bin
Roep _int_free_merge_chunk
aan om die blokkie te konsolideer indien nodig en voeg dit by die ongesorteerde lys
Vry
roep __libc_free
aan.
As die adres wat deurgegee word Nul (0) is, moet niks gedoen word nie.
Kontroleer aanwysertiket
As die blokkie gemap
is, moet dit ontmap
word en dis alles
Indien nie, voeg die kleur by en roep _int_free
daaroor aan
Dit sal eerste probeer om hierdie blok toe te wijs in die betrokke tcache. Daar word egter voorafgaande kontroles uitgevoer. Dit sal deurloop deur al die blokke van die tcache in dieselfde indeks as die vrygestelde blok en:
As daar meer inskrywings is as mp_.tcache_count
: free(): te veel blokke opgespoor in tcache
As die inskrywing nie belyn is nie: free(): ongealigneerde blok opgespoor in tcache 2
as die vrygestelde blok reeds vrygestel is en teenwoordig is as blok in die tcache: free(): dubbele vrystelling opgespoor in tcache 2
As alles goed verloop, word die blok by die tcache gevoeg en die funksies keer terug.
Begin deur te kontroleer of die grootte geskik is vir 'n vinnige bin en kyk of dit moontlik is om dit naby die boonste brokkie te stel.
Voeg dan die vrygemaakte brokkie by die boonste van die vinnige bin terwyl jy 'n paar kontroles uitvoer:
As die grootte van die brokkie ongeldig is (te groot of te klein) trigger: free(): invalid next size (fast)
As die bygevoegde brokkie reeds die boonste van die vinnige bin was: double free or corruption (fasttop)
As die grootte van die brokkie bo aan 'n verskillende grootte het as die brokkie wat ons byvoeg: invalid fastbin entry (free)
Hierdie funksie sal probeer om blok P van GROOTTE bytes met sy bure te kombineer. Plaas die resulterende blok op die ongesorteerde bin lys.
Sekere kontroles word uitgevoer:
As die blok die boonste blok is: double free or corruption (top)
As die volgende blok buite die grense van die arena is: double free or corruption (out)
As die blok nie gemerk is as gebruik (in die prev_inuse
van die volgende blok nie): double free or corruption (!prev)
As die volgende blok 'n te klein of te groot grootte het: free(): invalid next size (normal)
as die vorige blok nie in gebruik is nie, sal dit probeer konsolideer. Maar, as die prev_size verskil van die grootte wat in die vorige blok aangedui word: corrupted size vs. prev_size while consolidating