mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
34 lines
2.8 KiB
Markdown
34 lines
2.8 KiB
Markdown
# Ret2ret & Reo2pop
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## Ret2ret
|
|
|
|
Das Hauptziel dieser Technik ist es, ASLR zu umgehen, indem ein vorhandener Zeiger im Stack missbraucht wird.
|
|
|
|
Im Grunde genommen werden Stack-Überläufe normalerweise durch Strings verursacht, und Strings enden in der Regel mit einem Null-Byte am Ende im Speicher. Dies ermöglicht es, den Ort, auf den ein bereits vorhandener Zeiger im Stack zeigt, zu reduzieren. Wenn der Stack also `0xbfffffdd` enthielt, könnte dieser Überlauf ihn in `0xbfffff00` umwandeln (beachten Sie das letzte Null-Byte).
|
|
|
|
Wenn diese Adresse auf unseren Shellcode im Stack zeigt, ist es möglich, den Fluss zu dieser Adresse zu bringen, indem man Adressen zur `ret`-Anweisung hinzufügt, bis diese erreicht wird.
|
|
|
|
Daher würde der Angriff folgendermaßen aussehen:
|
|
|
|
- NOP-Sled
|
|
- Shellcode
|
|
- Überschreiben des Stacks vom EIP mit Adressen zu `ret` (RET-Sled)
|
|
- 0x00, das durch den String hinzugefügt wird, um eine Adresse im Stack zu modifizieren, sodass sie auf den NOP-Sled zeigt
|
|
|
|
Folgen Sie [**diesem Link**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2ret.c), um ein Beispiel für eine verwundbare Binärdatei zu sehen, und [**in diesem hier**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2retexploit.c) den Exploit.
|
|
|
|
## Ret2pop
|
|
|
|
Falls Sie einen perfekten Zeiger im Stack finden, den Sie nicht ändern möchten (in `ret2ret` haben wir das letzte niedrigste Byte auf `0x00` geändert), können Sie den gleichen `ret2ret`-Angriff durchführen, aber die Länge des RET-Sled muss um 1 verkürzt werden (damit das finale `0x00` die Daten direkt vor dem perfekten Zeiger überschreibt), und die letzte Adresse des RET-Sled muss auf `pop <reg>; ret` zeigen.\
|
|
Auf diese Weise werden die Daten vor dem perfekten Zeiger vom Stack entfernt (dies sind die Daten, die vom `0x00` betroffen sind) und das finale `ret` zeigt auf die perfekte Adresse im Stack, ohne dass Änderungen vorgenommen werden.
|
|
|
|
Folgen Sie [**diesem Link**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c), um ein Beispiel für eine verwundbare Binärdatei zu sehen, und [**in diesem hier**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) den Exploit.
|
|
|
|
## References
|
|
|
|
- [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md)
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|