- 39
- 0
- 约9.37千字
- 约 29页
- 2016-04-09 发布于湖北
- 举报
第二章 缓冲区溢出 出现缓冲区溢出的主要原因是不良的编程习惯。其他原因包括C语言和C++语言为程序设计人员提供了许多不安全的编程方法,缺乏安全可靠、简便易行的字符串处理函数,对错误的实际后果的忽略。 堆栈溢出(也称静态缓冲区溢出)(*) 如果向一个在栈的缓冲区复制数据,但是复制的数据量又比缓冲区大的时候,就会发生静态缓冲区溢出。在栈上声明的各种变量的位置就紧靠着函数调用程序的返回地址。通常出现的错误是用户输入的数据未经验证,就传递给strcpy这样的函数,产生的后果就是调用函数的返回地址将被攻击者选择的某个地址覆盖。在一个常规的攻击下,攻击者可以通过一个缓冲区溢出的应用程序来执行对他们有用的操作,比如在他们选择的端口上绑定一个命令解释程序。 第二章 缓冲区溢出 堆栈溢出 IA32架构的堆栈。栈中除其他内容外,还存储了参数、缓冲区和函数的返回地址。在IA32的系统中,栈是向下增长的,变量按LIFO的方式压入栈里,最后压入站的数据最先弹出。 Frame Pointer (EBP) Instruction Pointer (EIP) 本地变量、缓冲区、其他寄存器等 第二章 缓冲区溢出 堆栈溢出 下图显示的是压入两个缓冲区后的栈。首先,缓冲区buf1进栈,然后,缓冲区buf2进栈。在向buf2缓冲区中写入的数据量超过了程序预期的大小,buf1会被buf2的数据覆盖。甚至栈的其他部分,包括指令指针(EIP)的值也会被覆盖。EIP寄存器保存了函数的返回地址。所以恶意的用户可以通过调用这个函数选择任意一个想要的返回地址。 Buf2[512] Buf1[512] Frame Pointer (EBP) Instruction Pointer (EIP) 本地变量、缓冲区、其他寄存器等 第二章 缓冲区溢出 堆栈溢出 代码1 /* StackOverrun.c This program shows an example of how a stack-based buffer overrun can be used to execute an arbitrary code. Its objective is to find an input string that executes the function bar. */ #include stdio.h #include string.h void foo(const char* input) { char buf[10]; printf(“My stack looks like:\n%p\n%p\n%p\n%p\n%p\n%p\n\n”); strcpy(buf,input); printf(“%s\n”,buf); printf(“Now the stack looks like :\n%p\n%p\n%p\n%p\n%p\n%p\n\n”); } 第二章 缓冲区溢出 堆栈溢出 代码1(续) void bar(void) { printf(“Augh! I’ve been hacked!\n”); } int main(int argc, char* argv[]) { printf(“Address of foo=%p\n”,foo); printf(“Address of bar=%p\n”,bar); if(argc!=2) { printf(“Please supply a string as an argument!\n”); return -1; } foo(argv[1]); return 0; } 第二章 缓冲区溢出 堆栈溢出 运行 C:\Secureco2\Chapter03Stackoverrun.exe Hello Address of fooAddress of barMy stack looks like:00000000 7FFDF000 0012FF80 0040108A?We want to overwrite the return address for foo. 00410EDE Hello Now the stack looks like: 6C6C6568?You can see where “Hello” was copied in. 0000006F 7FFDF000 0012FF80 0040108A 00410EDE 第二章 缓冲区溢出 堆栈溢出 运行前后堆栈变化情况00000000 7FFDF000 0012FF80 0040108A 00410EDE …… foo的buf EBP,main的栈底指针 EIP,foo的
您可能关注的文档
最近下载
- 行者讲课脉法下篇.doc VIP
- (人教版)数学一年级上册寒假应用题“天天练”作业设计,含30份题组,附参考答案.doc
- 多参数监护仪技术参数和要求.doc VIP
- HL德國創新機能家電烤箱HL-840用户手册.pdf
- (高清!)2025年3月29日河北省事业单位联考C类《职测》真题及答案.pdf VIP
- ZORRO遥控器中文说明书.pdf
- 多参数监护仪技术参数.doc VIP
- 05R417-1 室内管道支吊架建筑工程图集 高清.docx VIP
- 2025届安徽省江南十校高三下学期第一次联考(一模)数学试题含答案.pdf VIP
- 三年级上册数学思维训练题30题,拓展孩子思维能力201123.pdf VIP
原创力文档

文档评论(0)