0

我正在尝试在 64 位 Asm中模仿 Security Tubes execve 教程( http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html )。我不确定总线错误来自哪里。我逐步浏览了 GDB 中的应用程序,但直到我超出框架后才出现错误。如果有人知道发生了什么,我很想听听你的意见。

.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
    xor %rax, %rax
    push %rax
    movabsq $0x68732f6e69622f2f, %rdi
    push %rax
    mov %rsp, %rsi
    push %rdi
    mov %rsp, %rdx
    mov $0x2000059, %rax
    syscall
4

1 回答 1

2

以下应该更好,但我没有 osx 来测试:

.globl _start
_start:
    xor %edx, %edx                    ; NULL for env
    movabsq $0x0068732f6e69622f, %rax ; /bin/sh<0>
    push %rax
    mov %rsp, %rdi                    ; filename
    push %rdx                         ; NULL for argv terminator
    push %rdi                         ; argv[0] = filename
    mov %rsp, %rsi                    ; argv
    mov $0x200003b, %eax              ; I think 59 is decimal
    syscall
于 2016-05-07T00:34:07.517 回答