# Sprawdzanie zabezpieczeń funkcji sterty
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## unlink 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: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.