gpt4 book ai didi

linux - 执行参数错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:38 25 4
gpt4 key购买 nike

我想用 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\0"
mov esi, esp ; &"ABC\0"
push 0x0068732f ; "/sh\0"
push 0x6e69622f ; "/bin"
mov ebx, esp ; &"//bin/sh\0"
push esi ; &"ABC\0"
push ebx ; &"//bin/sh\0"
mov ecx, esp ; args["//bin/sh\0", "ABC\0"]
push 0 ; NULL ; NULL NULL NULL NULL
mov edx, esp ; envp[NULL]

最佳答案

argv 数组需要以零终止。在push esi前加一个push 0

关于linux - 执行参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com