Heap Functions Security Checks
Last updated
Last updated
AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Daha fazla bilgi için kontrol edin:
unlinkBu, yapılan kontrollerin özeti:
Belirtilen blok boyutunun, bir sonraki blokta belirtilen prev_size
ile aynı olup olmadığını kontrol edin
Hata mesajı: corrupted size vs. prev_size
Ayrıca P->fd->bk == P
ve P->bk->fw == P
olduğundan emin olun
Hata mesajı: corrupted double-linked list
Blok küçük değilse, P->fd_nextsize->bk_nextsize == P
ve P->bk_nextsize->fd_nextsize == P
olduğundan emin olun
Hata mesajı: corrupted double-linked list (not small)
Daha fazla bilgi için kontrol edin:
malloc & sysmallocHızlı blok araması sırasında yapılan kontroller:
Blok hizalanmamışsa:
Hata mesajı: malloc(): unaligned fastbin chunk detected 2
İleri blok hizalanmamışsa:
Hata mesajı: malloc(): unaligned fastbin chunk detected
Döndürülen bloğun boyutu, hızlı blok içindeki dizine göre doğru değilse:
Hata mesajı: malloc(): memory corruption (fast)
Tcache'i doldurmak için kullanılan herhangi bir blok hizalanmamışsa:
Hata mesajı: malloc(): unaligned fastbin chunk detected 3
Küçük blok araması sırasında yapılan kontroller:
victim->bk->fd != victim
ise:
Hata mesajı: malloc(): smallbin double linked list corrupted
Konsolidasyon sırasında yapılan kontroller her hızlı blok bloğu için gerçekleştirilir:
Blok hizalanmamışsa tetikleyin:
Hata mesajı: malloc_consolidate(): unaligned fastbin chunk detected
Bloğun, içinde bulunduğu dizine göre farklı bir boyutta olması durumunda:
Hata mesajı: malloc_consolidate(): invalid chunk size
Önceki blok kullanımda değilse ve önceki bloğun boyutu prev_chunk tarafından belirtilen boyuttan farklıysa:
Hata mesajı: corrupted size vs. prev_size in fastbins
Karışık blok araması sırasında yapılan kontroller:
Blok boyutu garipse (çok küçük veya çok büyük):
Hata mesajı: malloc(): invalid size (unsorted)
Sonraki blok boyutu garipse (çok küçük veya çok büyük):
Hata mesajı: malloc(): invalid next size (unsorted)
Bir sonraki bloğun belirttiği önceki boyut, bloğun boyutundan farklıysa:
Hata mesajı: malloc(): mismatching next->prev_size (unsorted)
Eğer victim->bck->fd == victim
değilse veya victim->fd == av (arena)
değilse:
Hata mesajı: malloc(): unsorted double linked list corrupted
Her zaman sonuncusunu kontrol ettiğimizden, fd'sinin her zaman arena yapısına işaret etmesi gerekir.
Bir sonraki blok, öncekinin kullanımda olduğunu belirtmiyorsa:
Hata mesajı: malloc(): invalid next->prev_inuse (unsorted)
fwd->bk_nextsize->fd_nextsize != fwd
ise:
Hata mesajı: malloc(): largebin double linked list corrupted (nextsize)
fwd->bk->fd != fwd
ise:
Hata mesajı: malloc(): largebin double linked list corrupted (bk)
Büyük blok (dizinle) araması sırasında yapılan kontroller:
bck->fd-> bk != bck
ise:
Hata mesajı: malloc(): corrupted unsorted chunks
Büyük blok (bir sonraki büyük) araması sırasında yapılan kontroller:
bck->fd-> bk != bck
ise:
Hata mesajı: malloc(): corrupted unsorted chunks2
Üst blok kullanımı sırasında yapılan kontroller:
chunksize(av->top) > av->system_mem
ise:
Hata mesajı: malloc(): corrupted top size
tcache_get_n
tcache_get_n
içindeki kontroller:
Blok hizalanmamışsa:
Hata mesajı: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
tcache_thread_shutdown
içindeki kontroller:
Blok hizalanmamışsa:
Hata mesajı: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
__libc_realloc
içindeki kontroller:
Eski işaretçi hizalanmamışsa veya boyut yanlışsa:
Hata mesajı: realloc(): invalid pointer
_int_free
Daha fazla bilgi için kontrol edin:
free_int_free
başlangıcındaki kontroller:
İşaretçi hizalanmışsa:
Hata mesajı: free(): invalid pointer
Boyut MINSIZE
'dan büyükse ve boyut aynı zamanda hizalanmışsa:
Hata mesajı: free(): invalid size
_int_free
tcache içindeki kontroller:
mp_.tcache_count
'dan fazla giriş varsa:
Hata mesajı: free(): too many chunks detected in tcache
Giriş hizalanmamışsa:
Hata mesajı: free(): unaligned chunk detected in tcache 2
Serbest bırakılan blok zaten serbest bırakılmış ve tcache'te bir blok olarak mevcutsa:
Hata mesajı: free(): double free detected in tcache 2
_int_free
hızlı blok içindeki kontroller:
Blok boyutu geçersizse (çok büyük veya küçük) tetikleyin:
Hata mesajı: free(): invalid next size (fast)
Eklenen blok zaten hızlı blok üstünde ise:
Hata mesajı: double free or corruption (fasttop)
Üstteki bloğun boyutu, eklediğimiz bloğun boyutundan farklıysa:
Hata mesajı: invalid fastbin entry (free)
_int_free_merge_chunk
_int_free_merge_chunk
içindeki kontroller:
Eğer chunk en üst chunk ise:
Hata mesajı: double free or corruption (top)
Eğer bir sonraki chunk arena sınırlarının dışında ise:
Hata mesajı: double free or corruption (out)
Eğer chunk kullanılmamış olarak işaretlenmemişse (sonraki chunk'taki prev_inuse içinde):
Hata mesajı: double free or corruption (!prev)
Eğer bir sonraki chunk'ın boyutu çok küçük veya çok büyük ise:
Hata mesajı: free(): invalid next size (normal)
Eğer önceki chunk kullanılmıyorsa, birleştirmeye çalışacaktır. Ancak, prev_size
önceki chunk'ta belirtilen boyuttan farklı ise:
Hata mesajı: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunk
içindeki kontroller:
Sırasız bin'e bir chunk eklerken, unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
kontrol edilir:
Hata mesajı: free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_state
içindeki kontroller:
Hatalı hızlı bin chunk'ı:
Hata mesajı: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidate
içindeki kontroller:
Hatalı hızlı bin chunk'ı:
Hata mesajı: malloc_consolidate(): unaligned fastbin chunk detected
Yanlış hızlı bin chunk boyutu:
Hata mesajı: malloc_consolidate(): invalid chunk size
_int_realloc
_int_realloc
içindeki kontroller:
Boyut çok büyük veya çok küçük ise:
Hata mesajı: realloc(): invalid old size
Bir sonraki chunk'ın boyutu çok büyük veya çok küçük ise:
Hata mesajı: realloc(): invalid next size