Heap Functions Security Checks

HackTricks'i Destekleyin

Daha fazla bilgi için kontrol edin:

unlink

Bu, 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)

_int_malloc

Daha fazla bilgi için kontrol edin:

malloc & sysmalloc
  • Hı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

Last updated