hacktricks/binary-exploitation/heap/heap-functions-security-checks.md

6.1 KiB

Sprawdzanie zabezpieczeń funkcji sterty

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Ta funkcja usuwa kawałek z dwukierunkowej listy. Powszechne sprawdzenia zapewniają, że struktura listy pozostaje spójna podczas usuwania kawałków.

  • Sprawdzenia spójności:
  • Sprawdź, czy P->fd->bk == P i P->bk->fd == P.
  • Komunikat o błędzie: corrupted double-linked list

_int_malloc

Ta funkcja jest odpowiedzialna za przydzielanie pamięci ze sterty. Sprawdzenia tutaj zapewniają, że pamięć nie jest uszkodzona podczas alokacji.

  • Sprawdzenie rozmiaru fastbin:
  • Podczas usuwania kawałka z fastbin, upewnij się, że rozmiar kawałka mieści się w zakresie fastbin.
  • Komunikat o błędzie: malloc(): memory corruption (fast)
  • Sprawdzenie spójności smallbin:
  • Podczas usuwania kawałka z smallbin, upewnij się, że poprzednie i następne odnośniki w dwukierunkowej liście są spójne.
  • Komunikat o błędzie: malloc(): smallbin double linked list corrupted
  • Sprawdzenie zakresu pamięci unsorted bin:
  • Upewnij się, że rozmiar kawałków w unsorted bin mieści się w granicach minimalnego i maksymalnego limitu.
  • Komunikat o błędzie: malloc(): memory corruption | malloc(): invalid next size (unsorted)
  • Sprawdzenie spójności unsorted bin (pierwszy scenariusz):
  • Podczas wstawiania pozostałego kawałka do unsorted bin, sprawdź, czy unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Komunikat o błędzie: malloc(): corrupted unsorted chunks
  • Sprawdzenie spójności unsorted bin (drugi scenariusz):
  • To samo co poprzednie sprawdzenie, ale wywoływane podczas wstawiania po podziale szybkiego lub małego kawałka.
  • Komunikat o błędzie: malloc(): corrupted unsorted chunks 2

_int_free

Ta funkcja zwalnia wcześniej zaalokowaną pamięć. Sprawdzenia tutaj pomagają zapewnić właściwe zwalnianie pamięci i zapobiegają uszkodzeniom pamięci.

  • Sprawdzenie granic wskaźnika:
  • Upewnij się, że zwalniany wskaźnik nie owija się wokół pamięci.
  • Komunikat o błędzie: free(): invalid pointer
  • Sprawdzenie rozmiaru:
  • Upewnij się, że rozmiar zwalnianego kawałka wynosi co najmniej MINSIZE lub jest wielokrotnością MALLOC_ALIGNMENT.
  • Komunikat o błędzie: free(): invalid size
  • Sprawdzenie rozmiaru fastbin:
  • Dla kawałków fastbin, upewnij się, że rozmiar następnego kawałka mieści się w granicach minimalnego i maksymalnego limitu.
  • Komunikat o błędzie: free(): invalid next size (fast)
  • Sprawdzenie podwójnego zwolnienia fastbin:
  • Podczas wstawiania kawałka do fastbin, upewnij się, że kawałek na początku nie jest taki sam jak ten, który jest wstawiany.
  • Komunikat o błędzie: double free or corruption (fasttop)
  • Sprawdzenie spójności fastbin:
  • Podczas wstawiania do fastbin, upewnij się, że rozmiary kawałka głównego i wstawianego kawałka są takie same.
  • Komunikat o błędzie: invalid fastbin entry (free)
  • Sprawdzenie spójności top chunk:
  • Dla kawałków niebędących fastbin, upewnij się, że kawałek nie jest taki sam jak top chunk.
  • Komunikat o błędzie: double free or corruption (top)
  • Sprawdzenie granic pamięci:
  • Upewnij się, że następny kawałek pamięci mieści się w granicach areny.
  • Komunikat o błędzie: double free or corruption (out)
  • Sprawdzenie bitu prev_inuse:
  • Upewnij się, że bit poprzedniego używania w następnym kawałku jest oznaczony.
  • Komunikat o błędzie: double free or corruption (!prev)
  • Sprawdzenie normalnego rozmiaru:
  • Upewnij się, że rozmiar następnego kawałka mieści się w prawidłowych zakresach.
  • Komunikat o błędzie: free(): invalid next size (normal)
  • Sprawdzenie spójności unsorted bin:
  • Podczas wstawiania połączonego kawałka do unsorted bin, sprawdź, czy unsorted_chunks(av)->fd->bk == unsorted_chunks(av).
  • Komunikat o błędzie: free(): corrupted unsorted chunks
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: