PIE
Last updated
Last updated
Ucz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Binarny skompilowany jako PIE, czyli Position Independent Executable, oznacza, że program może być ładowany w różnych lokalizacjach pamięci za każdym razem, gdy jest uruchamiany, uniemożliwiając użycie stałych adresów.
Sposób na wykorzystanie tych binarnych plików polega na wykorzystaniu adresów względnych - przesunięcia między częściami programu pozostają takie same, nawet jeśli bezwzględne lokalizacje się zmieniają. Aby obejść PIE, wystarczy wyciek jednego adresu, zwykle ze stosu, korzystając z podatności, takich jak ataki formatowania łańcucha. Gdy już masz adres, możesz obliczyć inne za pomocą ich ustalonych przesunięć.
Przydatna wskazówka przy eksploatacji binarnych plików PIE to to, że ich adres bazowy zazwyczaj kończy się na 000 ze względu na to, że strony pamięci są jednostkami losowania, o wielkości 0x1000 bajtów. To wyrównanie może być kluczowym sprawdzeniem, czy exploit działa zgodnie z oczekiwaniami, wskazując, czy zidentyfikowano poprawny adres bazowy.
Lub możesz użyć tego do swojego exploitu, jeśli wyciekasz, że adres znajduje się pod 0x649e1024
, wiesz, że adres bazowy to 0x649e1000
i stamtąd możesz po prostu obliczyć przesunięcia funkcji i lokalizacji.
Aby ominąć PIE, konieczne jest wyciekanie pewnego adresu załadowanego binarnego, istnieją pewne opcje:
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)
Próbuj wartości EBP i EIP na stosie, aż wyciekniesz poprawne:
Użyj podatności na dowolne odczytywanie, takie jak format string, aby wyciec adres binarny (np. ze stosu, jak w poprzedniej technice) i uzyskać bazę binarną, a następnie korzystać z przesunięć stamtąd. Znajdź przykład tutaj.
Ucz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)