.. | ||
bypassing-canary-and-pie.md | ||
README.md |
PIE
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na GitHubie.
Podstawowe informacje
Binarny skompilowany jako PIE, czyli wykonywalny o pozycji niezależnej, oznacza, że program może być ładowany w różnych lokalizacjach pamięci za każdym razem, gdy jest uruchamiany, co uniemożliwia użycie adresów zahardkodowanych.
Sztuka wykorzystania 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 stałych 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 nie 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.
Ominięcia
Aby ominąć PIE, konieczne jest wyciekanie pewnego adresu załadowanego binarnego, istnieją na to różne 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:
{% content-ref url="bypassing-canary-and-pie.md" %} bypassing-canary-and-pie.md {% endcontent-ref %}
- Użyj podatności na dowolne odczytywanie, takie jak łańcuchy formatujące, aby wyciec adres binarny (np. ze stosu, jak w poprzedniej technice) i uzyskać bazę binarną, a następnie użyć przesunięć stamtąd. Znajdź przykład tutaj.
Odnośniki
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na GitHubie.