小编Sp0*_*nc3的帖子

ARM 上的面向返回编程(64 位)

我正在 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)

security assembly arm64 cortex-a armv8

4
推荐指数
1
解决办法
129
查看次数

标签 统计

arm64 ×1

armv8 ×1

assembly ×1

cortex-a ×1

security ×1