Ret2ret & Reo2pop
Reading time: 3 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
Ret2ret
Le principal objectif de cette technique est d'essayer de contourner l'ASLR en abusant d'un pointeur existant dans la pile.
En gros, les débordements de pile sont généralement causés par des chaînes, et les chaînes se terminent par un octet nul à la fin en mémoire. Cela permet d'essayer de réduire l'emplacement pointé par un pointeur existant déjà dans la pile. Donc, si la pile contenait 0xbfffffdd
, ce débordement pourrait le transformer en 0xbfffff00
(notez le dernier octet mis à zéro).
Si cette adresse pointe vers notre shellcode dans la pile, il est possible de faire en sorte que le flux atteigne cette adresse en ajoutant des adresses à l'instruction ret
jusqu'à ce que celle-ci soit atteinte.
Par conséquent, l'attaque serait comme suit :
- NOP sled
- Shellcode
- Écraser la pile depuis l'EIP avec des adresses vers
ret
(RET sled) - 0x00 ajouté par la chaîne modifiant une adresse de la pile pour la faire pointer vers le NOP sled
En suivant ce lien, vous pouvez voir un exemple d'un binaire vulnérable et dans celui-ci l'exploit.
Ret2pop
Dans le cas où vous pouvez trouver un pointeur parfait dans la pile que vous ne voulez pas modifier (dans ret2ret
, nous changeons le dernier octet le plus bas en 0x00
), vous pouvez effectuer la même attaque ret2ret
, mais la longueur du RET sled doit être réduite de 1 (de sorte que le dernier 0x00
écrase les données juste avant le pointeur parfait), et la dernière adresse du RET sled doit pointer vers pop <reg>; ret
.
De cette façon, les données avant le pointeur parfait seront supprimées de la pile (ce sont les données affectées par le 0x00
) et le dernier ret
pointera vers l'adresse parfaite dans la pile sans aucun changement.
En suivant ce lien, vous pouvez voir un exemple d'un binaire vulnérable et dans celui-ci l'exploit.
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.