House of Rabbit
Wymagania
Możliwość modyfikacji wskaźnika fd lub rozmiaru fastbin: Oznacza to, że możesz zmienić wskaźnik do przodu fragmentu w fastbin lub jego rozmiar.
Możliwość wywołania
malloc_consolidate
: Można to zrobić albo alokując duży fragment, albo łącząc fragment górny, co zmusza stertę do konsolidacji fragmentów.
Cele
Utworzenie nakładających się fragmentów: Aby jeden fragment nakładał się na drugi, umożliwiając dalsze manipulacje stertą.
Podrobienie fałszywych fragmentów: Aby oszukać alokator, aby traktował fałszywy fragment jako prawidłowy fragment podczas operacji na stercie.
Kroki ataku
POC 1: Zmiana rozmiaru fragmentu fastbin
Cel: Utworzenie nakładającego się fragmentu poprzez manipulację rozmiarem fragmentu fastbin.
Krok 1: Alokacja fragmentów
Krok 2: Zwolnij bloki
Krok 3: Zmiana Rozmiaru Kawałka
Krok 4: Wywołaj
malloc_consolidate
Przydzielanie dużej porcji powoduje wywołanie funkcji malloc_consolidate
, łączącej małe porcje w szybkim pojemniku. Zmanipulowany rozmiar chunk1
powoduje nakładanie się na chunk2
.
Po konsolidacji chunk1
nakłada się na chunk2
, co umożliwia dalsze wykorzystanie.
POC 2: Zmodyfikuj wskaźnik fd
fd
Cel: Utwórz fałszywą porcję, manipulując wskaźnikiem fd
w szybkim pojemniku.
Krok 1: Przydziel porcje
Wyjaśnienie: Alokujemy dwa fragmenty, jeden mniejszy i jeden większy, aby przygotować stertę do fałszywego fragmentu.
Krok 2: Utwórz fałszywy fragment
Krok 3: Zwolnij
chunk1
Wyjaśnienie: Zwolniamy chunk1
, dodając go do listy fastbin.
Krok 4: Zmodyfikuj
fd
chunk1
Wyjaśnienie: Zmieniamy wskaźnik w przód (fd
) chunk1
, aby wskazywał na nasz fałszywy kawałek wewnątrz chunk2
.
Krok 5: Wywołaj
malloc_consolidate
Alokacja ponownie dużej porcji powoduje uruchomienie malloc_consolidate
, który przetwarza fałszywy kawałek.
Fałszywy kawałek staje się częścią listy fastbin, co czyni go prawidłowym kawałkiem do dalszej eksploatacji.
Podsumowanie
Technika House of Rabbit polega na zmodyfikowaniu rozmiaru kawałka fast bin w celu stworzenia nakładających się kawałków lub manipulacji wskaźnikiem fd
w celu stworzenia fałszywych kawałków. Pozwala to atakującym na tworzenie prawidłowych kawałków na stercie, umożliwiając różne formy eksploatacji. Zrozumienie i praktykowanie tych kroków poprawi Twoje umiejętności eksploatacji sterty.
Last updated