执行参数错误
Bad parameters to execve
我想用 excve()
下一个执行:/bin/sh
ABC。
三个参数是一个字符数组(1 个字符 = 1 个字节),但是 strace
实用程序说我正在尝试执行:
execve("//bin/sh", ["//bin/sh", "ABC", 0x6e69622f, 0x68732f, ...], [/* 0 vars */]) = -1 EFAULT (Bad address)
函数:
int execve(const char* filename, char* const argv[], char* const envp[])
这是我的代码:
push 0x00434241 ; "ABC[=12=]"
mov esi, esp ; &"ABC[=12=]"
push 0x0068732f ; "/sh[=12=]"
push 0x6e69622f ; "/bin"
mov ebx, esp ; &"//bin/sh[=12=]"
push esi ; &"ABC[=12=]"
push ebx ; &"//bin/sh[=12=]"
mov ecx, esp ; args["//bin/sh[=12=]", "ABC[=12=]"]
push 0 ; NULL ; NULL NULL NULL NULL
mov edx, esp ; envp[NULL]
argv
数组需要以零结尾。在 push esi
.
前加一个 push 0
我想用 excve()
下一个执行:/bin/sh
ABC。
三个参数是一个字符数组(1 个字符 = 1 个字节),但是 strace
实用程序说我正在尝试执行:
execve("//bin/sh", ["//bin/sh", "ABC", 0x6e69622f, 0x68732f, ...], [/* 0 vars */]) = -1 EFAULT (Bad address)
函数:
int execve(const char* filename, char* const argv[], char* const envp[])
这是我的代码:
push 0x00434241 ; "ABC[=12=]"
mov esi, esp ; &"ABC[=12=]"
push 0x0068732f ; "/sh[=12=]"
push 0x6e69622f ; "/bin"
mov ebx, esp ; &"//bin/sh[=12=]"
push esi ; &"ABC[=12=]"
push ebx ; &"//bin/sh[=12=]"
mov ecx, esp ; args["//bin/sh[=12=]", "ABC[=12=]"]
push 0 ; NULL ; NULL NULL NULL NULL
mov edx, esp ; envp[NULL]
argv
数组需要以零结尾。在 push esi
.
push 0