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

4.8 KiB

Ret2ret & Ret2pop

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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 możesz zobaczyć przykład podatnego binarnego pliku, a w tym 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 możesz zobaczyć przykład podatnego binarnego pliku, a w tym exploit.

Referencje

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: