gpt4 book ai didi

linux - 利用缓冲区溢出 shellcode

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

我有一些关于缓冲区溢出的作业。

int func1(char *str) { 
char buffer[400];
strcpy(buffer,str);
printf("%s\n", buffer);
}

int main(int argc, char *argv[]) {
func1(argv[1]);
}

这是我的 bufferoverflow.c,我还有 shellcode.txt

\xeb\x16\x5e\x31\xd2\x52\x56\x89\xe1\x89\xf3\x31\xc0\xb0\x0b\xcd\x80\x31\xdb\x31\xc0\x40\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68

目标是使用缓冲区溢出来获取 root 权限。但是,我不知道到底该怎么做。
我使用“gdb”并且对 main 和 func1 函数有异议。
然而,汇编代码并没有给我很多信息。

函数 main 的汇编代码转储:

0x08048422 <+0>:    push   %ebp
0x08048423 <+1>: mov %esp,%ebp
0x08048425 <+3>: and $0xfffffff0,%esp
0x08048428 <+6>: sub $0x10,%esp
0x0804842b <+9>: mov 0xc(%ebp),%eax
0x0804842e <+12>: add $0x4,%eax
0x08048431 <+15>: mov (%eax),%eax
0x08048433 <+17>: mov %eax,(%esp)
0x08048436 <+20>: call 0x80483f4 <func1>
0x0804843b <+25>: leave
0x0804843c <+26>: ret

函数 func1 的汇编代码转储:

0x080483f4 <+0>:    push   %ebp
0x080483f5 <+1>: mov %esp,%ebp
0x080483f7 <+3>: sub $0x1a8,%esp
0x080483fd <+9>: mov 0x8(%ebp),%eax
0x08048400 <+12>: mov %eax,0x4(%esp)
0x08048404 <+16>: lea -0x198(%ebp),%eax
0x0804840a <+22>: mov %eax,(%esp)
0x0804840d <+25>: call 0x8048314 <strcpy@plt>
0x08048412 <+30>: lea -0x198(%ebp),%eax
0x08048418 <+36>: mov %eax,(%esp)
0x0804841b <+39>: call 0x8048324 <puts@plt>
0x08048420 <+44>: leave
0x08048421 <+45>: ret

最佳答案

如果你想发动缓冲区溢出攻击。首先,您必须找到某种方法来破坏易受攻击程序的正常控制流程,并且其次,您必须使程序按照您选择的方式运行。

在您的情况下,func1 的缓冲区容量为 400 个字符,并且它不检查输入的边界。因此,您可以发送超过 400 个字符并按照您的方式覆盖堆栈中 func1 的返回地址。

您可以使用传统的堆栈粉碎攻击来实现第二个目的。即向 func1 中注入(inject)代码,修改后的堆栈返回地址指向该代码。然而,大多数现代架构和操作系统通常都提供 DEP 来防御堆栈破坏攻击。

最有效的方法是使用ROP攻击。 ROP 攻击不会在目标程序中注入(inject)代码。它会找到您系统中已经存在的一些小工具(例如 libc),然后将这些小工具链接在一起以完成攻击(在您的情况下获得 root 权限)。ROP shellcode 由这些小工具的地址和一些数据组成。我不检查你的shell代码是否是ROP shellcode。

有关 ROP 的更多详细信息:[1] 面向返回的编程:系统、语言和应用程序[2] 面向返回的编程。 http://en.wikipedia.org/wiki/Return-oriented_programming

关于linux - 利用缓冲区溢出 shellcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362810/

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