mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
4.5 KiB
4.5 KiB
Ret2ret & Ret2pop
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs收藏品
- 加入 💬 Discord群 或 电报群 或在Twitter上关注我们 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
Ret2ret
这种技术的主要目标是尝试通过滥用栈中现有指针来绕过ASLR。
基本上,栈溢出通常是由字符串引起的,而字符串在内存中以空字节结尾。这使得可以尝试减少栈中现有指针指向的位置。因此,如果栈包含0xbfffffdd
,这种溢出可以将其转换为0xbfffff00
(请注意最后一个为零的字节)。
如果该地址指向我们在栈中的shellcode,就可以通过向ret
指令添加地址,直到达到该地址。
因此,攻击将如下进行:
- NOP滑梯
- Shellcode
- 用指向
ret
的地址(RET滑梯)覆盖EIP的栈 - 由字符串添加的0x00修改栈中的地址,使其指向NOP滑梯
通过此链接您可以看到一个易受攻击的二进制文件的示例,以及在这里攻击。
Ret2pop
如果您可以在栈中找到一个完美的指针,您不想修改(在ret2ret
中,我们将最终的最低字节更改为0x00
),则可以执行相同的ret2ret
攻击,但是RET滑梯的长度必须减少1(因此最终的0x00
将覆盖完美指针之前的数据),并且RET滑梯的最后一个地址必须指向**pop <reg>; ret
。
这样,完美指针之前的数据将从栈中删除(这是受0x00
影响的数据),并且最终的ret
将指向栈中的完美地址**,而不会有任何更改。
通过此链接您可以看到一个易受攻击的二进制文件的示例,以及在这里攻击。
参考资料
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs收藏品
- 加入 💬 Discord群 或 电报群 或在Twitter上关注我们 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。