PIE
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)
Plik binarny skompilowany jako PIE, czyli Program niezależny od lokalizacji, oznacza, że program może być ładowany w różnych lokalizacjach pamięci za każdym razem, gdy jest uruchamiany, co zapobiega twardo zakodowanym adresom.
Sztuczka w eksploatacji tych binariów polega na wykorzystaniu adresów względnych—offsety między częściami programu pozostają takie same, nawet jeśli lokalizacje bezwzględne się zmieniają. Aby obejść PIE, wystarczy wyciek jeden adres, zazwyczaj z stosu przy użyciu luk, takich jak ataki formatu ciągu. Gdy masz jeden adres, możesz obliczyć inne na podstawie ich stałych offsetów.
Pomocna wskazówka przy eksploatacji binariów PIE to to, że ich adres bazowy zazwyczaj kończy się na 000 z powodu stron pamięci będących jednostkami losowania, o rozmiarze 0x1000 bajtów. To wyrównanie może być krytycznym sprawdzaniem, jeśli exploit nie działa zgodnie z oczekiwaniami, wskazując, czy poprawny adres bazowy został zidentyfikowany.
Lub możesz to wykorzystać w swoim exploicie, jeśli wycieknie, że adres znajduje się na 0x649e1024
, wiesz, że adres bazowy to 0x649e1000
i stąd możesz po prostu obliczyć offsety funkcji i lokalizacji.
Aby obejść PIE, konieczne jest wycieknięcie jakiegoś adresu załadowanego binarnego, istnieje kilka opcji na to:
Wyłączony ASLR: Jeśli ASLR jest wyłączony, binarny skompilowany z PIE zawsze będzie ładowany pod tym samym adresem, dlatego PIE będzie bezużyteczne, ponieważ adresy obiektów zawsze będą w tym samym miejscu.
Otrzymanie wycieku (częste w łatwych wyzwaniach CTF, sprawdź ten przykład)
Brute-force wartości EBP i EIP na stosie, aż wyciekną poprawne:
Użyj luki arbitralnego odczytu, takiej jak format ciągu, aby wyciekować adres binarnego (np. ze stosu, jak w poprzedniej technice), aby uzyskać bazę binarnego i użyć offsetów stamtąd. Znajdź przykład tutaj.
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)