hacktricks/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md

4.5 KiB
Raw Blame History

Ret2ret & Ret2pop

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

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黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式