gpt4 book ai didi

c - 使用缓冲区溢出执行shell代码

转载 作者:太空狗 更新时间:2023-10-29 16:58:53 25 4
gpt4 key购买 nike

我最近一直在学习计算机安全,遇到了一些问题,尤其是这个问题。

我得到了一个带有固定缓冲区的函数,我需要溢出才能执行文件 shellcode 中的 shellcode。函数很简单:

void vuln(char *str) {
char buf[64];
strcpy(buf, str);
//function provided to display stack on command prompt
dump_stack((void **) buf, 21, (void **) &str);
}

我最初的猜测是修改函数的返回地址,eip,以便定位和执行 shellcode 文件中的内容,但我意识到我没有该文件的地址可以用十六进制值表示。我非常确定我需要操纵返回地址,所以目前我正在调用的是:

//the string is passed as a command line arg
./buffer_overflow_shellcode $(python -c "print 'A'*72 + '\x41\xd6\xff\xff' ")

我的输出是:

Stack dump:
0xffffd600: 0xffffd7fd (first argument)
0xffffd5fc: 0x08048653 (saved eip)
0xffffd5f8: 0xffffd641 (saved ebp)
0xffffd5f4: 0x41414141
0xffffd5f0: 0x41414141
0xffffd5ec: 0x41414141
0xffffd5e8: 0x41414141
0xffffd5e4: 0x41414141
0xffffd5e0: 0x41414141
0xffffd5dc: 0x41414141
0xffffd5d8: 0x41414141
0xffffd5d4: 0x41414141
0xffffd5d0: 0x41414141
0xffffd5cc: 0x41414141
0xffffd5c8: 0x41414141
0xffffd5c4: 0x41414141
0xffffd5c0: 0x41414141
0xffffd5bc: 0x41414141
0xffffd5b8: 0x41414141
0xffffd5b4: 0x41414141
0xffffd5b0: 0x41414141 (beginning of buffer)
Segmentation fault

在我用附加地址替换 edp 的地址并到达之后,python 脚本简单地打印 72 个字母 A 使缓冲区溢出到 edpeip 的点在返回地址,准备对其进行操作。非常感谢任何帮助,谢谢!

最佳答案

好吧,我认为这可能类似于计算机系统:程序员的视角中的缓冲区溢出实验室。首先,使用objdump 获取静态地址。其次,使用 gdb 运行它以找出堆栈的地址。然后,用这样一个字符串填充缓冲区,覆盖缓冲区的返回地址(这样你就可以放置漏洞利用代码,或者,你可以调用程序中的其他代码)。

看看这个 pdf作为本实验的指南。它可以为您提供一些见解。

正如所指出的,需要大量的编译时标志来实现这一点。 (我会检查一下并很快回来)。或者,this帖子提供了有关如何编译此类示例的指南。

关于c - 使用缓冲区溢出执行shell代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325486/

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