hacktricks/binary-exploitation/heap/house-of-einherjar.md

4.2 KiB

Dom Einherjar

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Kod

Cel

  • Celem jest alokacja pamięci praktycznie w dowolnym określonym adresie.

Wymagania

  • Utwórz fałszywy kawałek, gdy chcemy zaalokować kawałek:
  • Ustaw wskaźniki tak, aby wskazywały na siebie same, aby ominąć kontrole spójności
  • Przesunięcie o jeden kawałek do innego w celu zmodyfikowania poprzedniego w użyciu
  • Wskaż w prev_size nadużywanego kawałka o jeden różnicę między nim a fałszywym kawałkiem
  • Rozmiar fałszywego kawałka musi również być ustawiony na ten sam rozmiar, aby ominąć kontrole spójności
  • Do skonstruowania tych kawałków będziesz potrzebować wycieku sterty.

Atak

  • A fałszywy kawałek jest tworzony wewnątrz kawałka kontrolowanego przez atakującego, wskazując z fd i bk na oryginalny kawałek, aby ominąć zabezpieczenia
  • Alokowane są 2 inne kawałki (B i C)
  • Wykorzystując przesunięcie o jeden w kawałku B, bit prev in use jest czyszczony, a dane prev_size są nadpisywane różnicą między miejscem, w którym jest alokowany kawałek C, a fałszywym kawałkiem A wygenerowanym wcześniej
  • Ten prev_size oraz rozmiar w fałszywym kawałku A muszą być takie same, aby ominąć kontrole.
  • Następnie wypełniana jest tcache
  • Następnie C jest zwalniane, aby skonsolidowało się z fałszywym kawałkiem A
  • Następnie tworzony jest nowy kawałek D, który będzie zaczynał się w fałszywym kawałku A i pokrywał kawałek B
  • Dom Einherjar kończy się tutaj
  • Można kontynuować to atakiem na fast bin:
  • Zwolnij B, aby dodać go do fast bin
  • Nadpisz fd B, aby wskazywał na docelowy adres nadużywając kawałek D (ponieważ zawiera w sobie B)
  • Następnie wykonuje się 2 alokacje i druga z nich będzie alokować docelowy adres

Odwołania i inne przykłady