欢迎来到天天文库
浏览记录
ID:59488035
大小:154.00 KB
页数:29页
时间:2020-09-13
《第二章缓冲区溢出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:00000000000000007FFDF0000012FF800040108AWewanttooverwritethereturnaddressforfoo.
7、00410EDEHelloNowthestacklookslike:6C6C6568Youcanseewhere“Hello”wascopiedin.0000006F7FFDF0000012FF800040108A00410EDE第二章缓冲区溢出堆栈溢出运行前后堆栈变化情况00000000000000007FFDF0000012FF800040108A00410EDE……foo的bufEBP,main的栈底指针EIP,foo的返回地址0012FF80,main的栈底6C6C65680000006F7FFDF00000
8、12FF800040108A00410EDE……无缓冲区溢出第二章缓冲区溢出堆栈溢出运行C:Secureco2Chapter03>Stackoverrun.exeAAAAAAAAAAAAAAAAAAAAAAAAAddressoffoo=00401000Addressofbar=00401045Mystacklookslike:
此文档下载收益归作者所有