第二章缓冲区溢出ppt课件.ppt

第二章缓冲区溢出ppt课件.ppt

ID:59488035

大小:154.00 KB

页数:29页

时间:2020-09-13

第二章缓冲区溢出ppt课件.ppt_第1页
第二章缓冲区溢出ppt课件.ppt_第2页
第二章缓冲区溢出ppt课件.ppt_第3页
第二章缓冲区溢出ppt课件.ppt_第4页
第二章缓冲区溢出ppt课件.ppt_第5页
资源描述:

《第二章缓冲区溢出ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章缓冲区溢出出现缓冲区溢出的主要原因是不良的编程习惯。其他原因包括C语言和C++语言为程序设计人员提供了许多不安全的编程方法,缺乏安全可靠、简便易行的字符串处理函数,对错误的实际后果的忽略。堆栈溢出(也称静态缓冲区溢出)(*)如果向一个在栈的缓冲区复制数据,但是复制的数据量又比缓冲区大的时候,就会发生静态缓冲区溢出。在栈上声明的各种变量的位置就紧靠着函数调用程序的返回地址。通常出现的错误是用户输入的数据未经验证,就传递给strcpy这样的函数,产生的后果就是调用函数的返回地址将被攻击者选择的某个地址覆盖。在一个常规

2、的攻击下,攻击者可以通过一个缓冲区溢出的应用程序来执行对他们有用的操作,比如在他们选择的端口上绑定一个命令解释程序。第二章缓冲区溢出堆栈溢出IA32架构的堆栈。栈中除其他内容外,还存储了参数、缓冲区和函数的返回地址。在IA32的系统中,栈是向下增长的,变量按LIFO的方式压入栈里,最后压入站的数据最先弹出。FramePointer(EBP)InstructionPointer(EIP)本地变量、缓冲区、其他寄存器等第二章缓冲区溢出堆栈溢出下图显示的是压入两个缓冲区后的栈。首先,缓冲区buf1进栈,然后,缓冲区buf2进

3、栈。在向buf2缓冲区中写入的数据量超过了程序预期的大小,buf1会被buf2的数据覆盖。甚至栈的其他部分,包括指令指针(EIP)的值也会被覆盖。EIP寄存器保存了函数的返回地址。所以恶意的用户可以通过调用这个函数选择任意一个想要的返回地址。Buf2[512]Buf1[512]FramePointer(EBP)InstructionPointer(EIP)本地变量、缓冲区、其他寄存器等第二章缓冲区溢出堆栈溢出代码1/*StackOverrun.cThisprogramshowsanexampleofhowastack-

4、basedbufferoverruncanbeusedtoexecuteanarbitrarycode.Itsobjectiveistofindaninputstringthatexecutesthefunctionbar.*/#include#includevoidfoo(constchar*input){charbuf[10];printf(“Mystacklookslike:%p%p%p%p%p%p”);strcpy(buf,input);pr

5、intf(“%s”,buf);printf(“Nowthestacklookslike:%p%p%p%p%p%p”);}第二章缓冲区溢出堆栈溢出代码1(续)voidbar(void){printf(“Augh!I’vebeenhacked!”);}intmain(intargc,char*argv[]){printf(“Addressoffoo=%p”,foo);printf(“Addressofbar=%p”,bar);if(argc!=2){printf(“Pleas

6、esupplyastringasanargument!”);return-1;}foo(argv[1]);return0;}第二章缓冲区溢出堆栈溢出运行C:Secureco2Chapter03>Stackoverrun.exeHelloAddressoffoo=00401000Addressofbar=00401045Mystacklookslike:00000000000000007FFDF0000012FF800040108AWewanttooverwritethereturnaddressforfoo.

7、00410EDEHelloNowthestacklookslike:6C6C6568Youcanseewhere“Hello”wascopiedin.0000006F7FFDF0000012FF800040108A00410EDE第二章缓冲区溢出堆栈溢出运行前后堆栈变化情况00000000000000007FFDF0000012FF800040108A00410EDE……foo的bufEBP,main的栈底指针EIP,foo的返回地址0012FF80,main的栈底6C6C65680000006F7FFDF00000

8、12FF800040108A00410EDE……无缓冲区溢出第二章缓冲区溢出堆栈溢出运行C:Secureco2Chapter03>Stackoverrun.exeAAAAAAAAAAAAAAAAAAAAAAAAAddressoffoo=00401000Addressofbar=00401045Mystacklookslike:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。