小编nem*_*666的帖子

在栈上为execve创建一个arg数组

我想编写一个汇编程序,该程序通过 EXECVE(系统调用 #0x3C)程序 /bin/ls 和开关 -al 执行。

手册页 (man 2 execve) 指出调用需要三个值:

int execve(const char *filename, char *const argv[], char *const envp[]);

我不太明白如何建立三个论点。据我所知,第一个参数进入RDI,第二个进入RSI,第三个进入RDX。我相信设置第一个就足够了

    push 0x736c2f2f         ;sl//
    push 0x6e69622f         ;nib/
    mov rdi, rsp
Run Code Online (Sandbox Code Playgroud)

对于第三个,事情很简单:

    xor r11, r11
    mov rdx, r11
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何构建第二个参数,它应该是一个包含 ['/bin//ls', '-aal']

我需要为 x86-64 编写它,所以请不要int 0x80提出建议。

assembly x86-64 shellcode

2
推荐指数
1
解决办法
479
查看次数

标签 统计

assembly ×1

shellcode ×1

x86-64 ×1