House of Einherjar
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Lub ten z https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (możesz potrzebować wypełnić tcache)
Celem jest przydzielenie pamięci w prawie dowolnym konkretnym adresie.
Utwórz fałszywy kawałek, gdy chcemy przydzielić kawałek:
Ustaw wskaźniki, aby wskazywały na siebie, aby obejść kontrole poprawności
Przepełnienie o jeden bajt z bajtem null z jednego kawałka do drugiego, aby zmodyfikować flagę PREV_INUSE
.
Wskaź w prev_size
fałszywego kawałka, różnicę między nim a fałszywym kawałkiem
Rozmiar fałszywego kawałka musi być również ustawiony na ten sam rozmiar, aby obejść kontrole poprawności
Do konstruowania tych kawałków będziesz potrzebować wycieku z sterty.
A
fałszywy kawałek jest tworzony wewnątrz kawałka kontrolowanego przez atakującego, wskazując fd
i bk
na oryginalny kawałek, aby obejść zabezpieczenia
Przydzielane są 2 inne kawałki (B
i C
)
Wykorzystując błąd 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 przydzielany jest kawałek C
, a fałszywym kawałkiem A
utworzonym wcześniej
Ten prev_size
i rozmiar w fałszywym kawałku A
muszą być takie same, aby obejść kontrole.
Następnie, tcache jest wypełniane
Następnie, C
jest zwalniane, aby skonsolidować się z fałszywym kawałkiem A
Następnie tworzony jest nowy kawałek D
, który zacznie się w fałszywym kawałku A
i pokryje kawałek B
Dom Einherjar kończy się tutaj
To można kontynuować atakiem na szybki bin lub zatruciem Tcache:
Zwalniamy B
, aby dodać go do szybkiego bin / Tcache
fd
kawałka B
jest nadpisywany, co sprawia, że wskazuje na docelowy adres, wykorzystując kawałek D
(ponieważ zawiera B
wewnątrz)
Następnie wykonuje się 2 malloci, a drugi z nich będzie przydzielał docelowy adres
Po zwolnieniu wskaźników nie są one ustawiane na null, więc nadal możliwe jest uzyskanie dostępu do ich danych. Dlatego kawałek jest umieszczany w nieposortowanym binie i wycieka wskaźniki, które zawiera (wyciek libc), a następnie nowa sterta jest umieszczana w nieposortowanym binie i wycieka adres sterty z uzyskanego wskaźnika.
Błąd przepełnienia bajtu null w strtok
.
Użyj House of Einherjar, aby uzyskać sytuację z nakładającymi się kawałkami i zakończyć zatruciem Tcache, aby uzyskać dowolny zapis prymitywny.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)