Ret2ret & Reo2pop
Reading time: 4 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Ret2ret
这个技术的主要目标是尝试通过滥用栈中现有指针来绕过 ASLR。
基本上,栈溢出通常是由字符串引起的,而字符串在内存中以一个空字节结尾。这允许尝试减少由栈中现有指针指向的位置。因此,如果栈包含 0xbfffffdd
,这个溢出可以将其转换为 0xbfffff00
(注意最后一个零字节)。
如果该地址指向我们在栈中的 shellcode,可以通过向 ret
指令添加地址使流程到达该地址,直到到达该地址。
因此,攻击将是这样的:
- NOP sled
- Shellcode
- 从 EIP 覆盖栈,使用指向
ret
的地址(RET sled) - 由字符串添加的 0x00 修改栈中的一个地址,使其指向 NOP sled
通过这个链接你可以看到一个易受攻击的二进制文件,和这个链接中的利用。
Ret2pop
如果你能找到一个完美的指针在栈中而不想修改(在 ret2ret
中我们将最后一个最低字节更改为 0x00
),你可以执行相同的 ret2ret
攻击,但RET sled 的长度必须缩短 1(因此最后的 0x00
覆盖完美指针之前的数据),并且RET sled 的最后地址必须指向**pop <reg>; ret
。
这样,完美指针之前的数据将从栈中移除(这是受 0x00
影响的数据),并且最终的 ret
将指向栈中的完美地址**而没有任何更改。
通过这个链接你可以看到一个易受攻击的二进制文件,和这个链接中的利用。
References
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。