Heap Functions Security Checks
Last updated
Last updated
Naučite i vežbajte hakovanje AWS-a:HackTricks Training AWS Red Team Expert (ARTE) Naučite i vežbajte hakovanje GCP-a: HackTricks Training GCP Red Team Expert (GRTE)
Za više informacija pogledajte:
unlinkOvo je sažetak izvršenih provera:
Proverite da li je naznačena veličina bloka ista kao prev_size
naznačena u sledećem bloku
Poruka o grešci: corrupted size vs. prev_size
Proverite takođe da li P->fd->bk == P
i P->bk->fw == P
Poruka o grešci: corrupted double-linked list
Ako blok nije mali, proverite da li P->fd_nextsize->bk_nextsize == P
i P->bk_nextsize->fd_nextsize == P
Poruka o grešci: corrupted double-linked list (not small)
Za više informacija pogledajte:
malloc & sysmallocProvere tokom pretrage brzih binova:
Ako je blok neusaglašen:
Poruka o grešci: malloc(): unaligned fastbin chunk detected 2
Ako je sledeći blok neusaglašen:
Poruka o grešci: malloc(): unaligned fastbin chunk detected
Ako vraćeni blok ima veličinu koja nije ispravna zbog svog indeksa u brzom binu:
Poruka o grešci: malloc(): memory corruption (fast)
Ako je bilo koji blok korišćen za popunjavanje tcache-a neusaglašen:
Poruka o grešci: malloc(): unaligned fastbin chunk detected 3
Provere tokom pretrage malih binova:
Ako victim->bk->fd != victim
:
Poruka o grešci: malloc(): smallbin double linked list corrupted
Provere tokom konsolidacije izvršene za svaki brzi bin blok:
Ako je blok neusaglašen pokreni:
Poruka o grešci: malloc_consolidate(): unaligned fastbin chunk detected
Ako blok ima drugačiju veličinu od one koju bi trebalo zbog indeksa u kojem se nalazi:
Poruka o grešci: malloc_consolidate(): invalid chunk size
Ako prethodni blok nije u upotrebi i prethodni blok ima veličinu različitu od one naznačene od strane prev_chunk:
Poruka o grešci: corrupted size vs. prev_size in fastbins
Provere tokom pretrage nesortiranih binova:
Ako je veličina bloka čudna (previše mala ili previše velika):
Poruka o grešci: malloc(): invalid size (unsorted)
Ako je veličina sledećeg bloka čudna (previše mala ili previše velika):
Poruka o grešci: malloc(): invalid next size (unsorted)
Ako veličina prethodnog naznačena od strane sledećeg bloka se razlikuje od veličine bloka:
Poruka o grešci: malloc(): mismatching next->prev_size (unsorted)
Ako nije victim->bck->fd == victim
ili nije victim->fd == av (arena)
:
Poruka o grešci: malloc(): unsorted double linked list corrupted
Pošto uvek proveravamo poslednji, njegov fd bi uvek trebalo da pokazuje na strukturu arene.
Ako sledeći blok ne naznačava da je prethodni u upotrebi:
Poruka o grešci: malloc(): invalid next->prev_inuse (unsorted)
Ako fwd->bk_nextsize->fd_nextsize != fwd
:
Poruka o grešci: malloc(): largebin double linked list corrupted (nextsize)
Ako fwd->bk->fd != fwd
:
Poruka o grešci: malloc(): largebin double linked list corrupted (bk)
Provere tokom pretrage velikih binova (po indeksu):
bck->fd-> bk != bck
:
Poruka o grešci: malloc(): corrupted unsorted chunks
Provere tokom pretrage velikih binova (sledeći veći):
bck->fd-> bk != bck
:
Poruka o grešci: malloc(): corrupted unsorted chunks2
Provere tokom korišćenja vrhunskog bloka:
chunksize(av->top) > av->system_mem
:
Poruka o grešci: malloc(): corrupted top size
tcache_get_n
Provere u tcache_get_n
:
Ako je blok neusaglašen:
Poruka o grešci: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
Provere u tcache_thread_shutdown
:
Ako je blok neusaglašen:
Poruka o grešci: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
Provere u __libc_realloc
:
Ako je stari pokazivač neusaglašen ili je veličina bila neispravna:
Poruka o grešci: realloc(): invalid pointer
_int_free
Za više informacija pogledajte:
freeProvere tokom početka _int_free
:
Pokazivač je usaglašen:
Poruka o grešci: free(): invalid pointer
Veličina veća od MINSIZE
i takođe usaglašena:
Poruka o grešci: free(): invalid size
Provere u _int_free
tcache-u:
Ako ima više unosa od mp_.tcache_count
:
Poruka o grešci: free(): too many chunks detected in tcache
Ako unos nije usaglašen:
Poruka o grešci: free(): unaligned chunk detected in tcache 2
Ako je oslobođeni blok već bio oslobođen i prisutan kao blok u tcache-u:
Poruka o grešci: free(): double free detected in tcache 2
Provere u _int_free
brzom binu:
Ako je veličina bloka neispravna (previše velika ili mala) pokreni:
Poruka o grešci: free(): invalid next size (fast)
Ako je dodati blok već bio na vrhu brzog bina:
Poruka o grešci: double free or corruption (fasttop)
Ako veličina bloka na vrhu ima drugačiju veličinu od bloka koji dodajemo:
Poruka o grešci: invalid fastbin entry (free)
_int_free_merge_chunk
Provere u _int_free_merge_chunk
:
Ako je chunk vrhunski chunk:
Poruka o grešci: double free or corruption (top)
Ako je sledeći chunk van granica arene:
Poruka o grešci: double free or corruption (out)
Ako chunk nije označen kao korišćen (u prev_inuse od sledećeg chunk-a):
Poruka o grešci: double free or corruption (!prev)
Ako sledeći chunk ima previše malu ili previše veliku veličinu:
Poruka o grešci: free(): invalid next size (normal)
Ako prethodni chunk nije u upotrebi, pokušaće da konsoliduje. Ali, ako se prev_size
razlikuje od veličine navedene u prethodnom chunk-u:
Poruka o grešci: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
Provere u _int_free_create_chunk
:
Dodavanje chunk-a u nesortirani bin, provera da li je unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
Poruka o grešci: free(): corrupted unsorted chunks
do_check_malloc_state
Provere u do_check_malloc_state
:
Ako je fast bin chunk nepravilno poravnat:
Poruka o grešci: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
Provere u malloc_consolidate
:
Ako je fast bin chunk nepravilno poravnat:
Poruka o grešci: malloc_consolidate(): unaligned fastbin chunk detected
Ako je nepravilna veličina fast bin chunk-a:
Poruka o grešci: malloc_consolidate(): invalid chunk size
_int_realloc
Provere u _int_realloc
:
Veličina je previše velika ili previše mala:
Poruka o grešci: realloc(): invalid old size
Veličina sledećeg chunk-a je previše velika ili previše mala:
Poruka o grešci: realloc(): invalid next size