我正在 ARM(64 位)上学习 Rop。所以我正在我的 ARMv8 Cortex A-72 上测试 Rop 漏洞,以了解它是如何在 Arm64 上工作的。我写了一个非常简单的c易受攻击的代码:
#include <stdio.h>
#include <string.h>
void win(unsigned magic){
if(magic == 0xdeadbeef)
printf("I Should Never be Called!\n");
}
void vuln(){
char buffer[80];
printf("Buffer at:%p\n",buffer);
gets(buffer);
}
int main(int argc, char **argv){
vuln();
}
Run Code Online (Sandbox Code Playgroud)
为了调用 win 函数,我认为正确的 rop 链是:
offset + pop {x0,pc} + correct_argument + win_address
Run Code Online (Sandbox Code Playgroud)
这是汇编代码:
Dump of assembler code for function main:
0x00000055555557f8 <+0>: stp x29, x30, [sp, #-32]!
0x00000055555557fc <+4>: mov x29, sp
0x0000005555555800 <+8>: str w0, …Run Code Online (Sandbox Code Playgroud)