hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md

58 lines
4.8 KiB
Markdown
Raw Normal View History

# Ret2ret & Ret2pop
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
</details>
## Ret2ret
Głównym celem tej techniki jest próba **ominięcia ASLR poprzez nadużycie istniejącego wskaźnika na stosie**.
W skrócie, przepełnienia stosu zazwyczaj są spowodowane ciągami znaków, a **ciągi kończą się bajtem null na końcu** w pamięci. Pozwala to na próbę zmniejszenia miejsca wskazywanego przez istniejący już wskaźnik na stosie. Jeśli stos zawierał `0xbfffffdd`, to przepełnienie mogłoby przekształcić go w `0xbfffff00` (zauważ ostatni zerowy bajt).
Jeśli ten adres wskazuje na nasz kod powłoki na stosie, możliwe jest skierowanie przepływu do tego adresu poprzez **dodawanie adresów do instrukcji `ret`** aż do osiągnięcia tego.
Atak wyglądałby więc następująco:
* NOP sled
* Kod powłoki
* Nadpisanie stosu z EIP za pomocą **adresów do `ret`** (RET sled)
* 0x00 dodane przez ciąg znaków modyfikujący adres ze stosu, sprawiając, że wskazuje on na NOP sled
Za pomocą [**tego linku**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2ret.c) możesz zobaczyć przykład podatnego binarnego pliku, a [**w tym**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2retexploit.c) exploit.
## Ret2pop
W przypadku znalezienia **idealnego wskaźnika na stosie, którego nie chcesz modyfikować** (w `ret2ret` zmienialiśmy ostatni najniższy bajt na `0x00`), można przeprowadzić ten sam atak `ret2ret`, ale **długość RET sled musi być skrócona o 1** (aby finalne `0x00` nadpisało dane tuż przed idealnym wskaźnikiem), a **ostatni** adres RET sled musi wskazywać na **`pop <reg>; ret`**.\
W ten sposób **dane przed idealnym wskaźnikiem zostaną usunięte** ze stosu (są to dane dotknięte przez `0x00`) i **ostatni `ret` wskaże na idealny adres** na stosie bez żadnych zmian.
Za pomocą [**tego linku**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) możesz zobaczyć przykład podatnego binarnego pliku, a [**w tym**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) exploit.
## Referencje
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md)
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
</details>