我正在尝试在 Linux 的 GNU asm 中编写 shellcode,但无法使用参数调用 execve。
我正在尝试做什么:
execve("/bin/ls", ["/bin/ls", "-la", NULL], NULL);
这是我的代码:
.section .text
.globl _start
_start:
push $0x3b
pop %rax
xorq %rdx,%rdx
push %rdx
movabs $0x61616161616c2d2d,%r8
shr $0x8, %r8
push %r8
movabs $0x736c2f6e69622f2f,%r8
shr $0x8, %r8
push %r8
mov %rsp, %rdi
push %rdx
push %rdi
mov %rsp, %rsi
syscall
push $0x3c
pop %rax
xorq %rdi, %rdi
syscall
在 execv 的系统调用之前,这是我的 reg/stack :gdb https://i.stack.imgur.com/xztSp.png
我想 :
RDI 必须包含“/bin/ls”地址
RSI 必须包含“/bin/ls”地址
RDX = 空
shellcode 正在执行 /bin/ls 但不使用 -la args。
怎么了 ?
thx