Ret2syscall - ARM64

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

支持HackTricks的其他方式:

在以下位置找到arm64的介绍:

Introduction to ARM64v8

代码

我们将使用以下页面中的示例:

Ret2win - arm64
#include <stdio.h>
#include <unistd.h>

void win() {
printf("Congratulations!\n");
}

void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}

int main() {
vulnerable_function();
return 0;
}

编译时禁用 PIE 和 Canary:

机器码片段

为了准备syscall的调用,需要以下配置:

  • x8: 221 指定sys_execve

  • x0: 指向"/bin/sh"的指针,指定要执行的文件

  • x1: 0 指定不传递任何参数

  • x2: 0 指定不传递任何环境变量

使用ROPgadget.py,我能够在机器的libc库中找到以下机器码片段:

使用前面的gadget,我们可以从堆栈中控制所有需要的寄存器,并使用x5跳转到第二个gadget以调用syscall。

攻击利用

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

其他支持HackTricks的方式:

最后更新于