四缓冲区溢出攻击与防范实验报告_第1页
四缓冲区溢出攻击与防范实验报告_第2页
四缓冲区溢出攻击与防范实验报告_第3页
四缓冲区溢出攻击与防范实验报告_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#includeintvoidfun(constchar*{charprintf("%s\n",}void{}intmain(intargc,char*{printf("Addressofprintf("Addressofvoidintchar//printf("%d\n",intaddr[0]=(go<<24)>>24;addr[1]=(go<<16)>>24;addr[2]=(go<<8)>>24;charfor(int}voidfun()函数中buf只分配了8字节的空间,通过写超出其长度的字符串ss,并传入voidfun()函数对buf赋值,使调用fun()函数时的堆栈溢出,覆盖了返回地址,令构造的ss输入部分恰巧使覆盖返回地址部分的内容正好指向haha()函数 ,这样程序就不会返回之前的步骤(也就是主函数中调用fun()函数下边的指令),而是进入了haha()函数,同时执行haha()函数中的printf("\nOK!success")指令,在屏幕上打印出OK!success首先通过定义一个全局变量k,它代表传入的ssbuf(彼此相对的地址)的距离,然后在主函数中首先定义一个任意ss(经测试,传入什么ss不影响ssbuf),调用fun(),这样可以得到在本机上二者地址相差的距离,然后用go录haha()的代码段地址,这里需要说明一点:当调用一个函数的时候,首先是参数入栈,然后是返回地址。并且,这些数据都是倒着表示的,因为返回地址是4址就是:buf[k-1]*256*256*256+buf[k-2]*256*256+buf[k-3]*256+buf[k-4]。将go分成4赋给ss应位置,得到的ss可以令fun()函数执行后直接跳到haha()函数的字符串。2)分析缓冲区溢 缓冲区溢出是一种非常普遍、非常的,在系统、应用软件中广泛存在。利用缓冲区溢出,可 统,进而进行各种操作。缓区出指计机缓区填数位时了冲本的量出数覆在法据上,理的况是程检数长并允输超缓区度字符但绝多程都假数长总所配的 空想配,就缓区出下患操统使的冲区又称"栈".在个作进程间,令被时 "栈"中,堆"会现区出。 3)给出防范和避免缓冲区溢 的措编程语言通常都要带有库文件。如果一个库文件具有某些,任何包括该库文件的应用程序就都会有这些。因此,往往会先试图利用常用的库文件中已知的来达到本地应用程序的目的。库文件本身也不可靠。虽然的编译器都开始加入大量可靠的库文件,但长期以来库文件为了提供了快速、简单的方式来完成任务,几乎没有考虑到安全编码的问题。C。而用C编写的程序中依赖的标准库就很容易在运行时产生错误,这也为希望利用缓冲区溢出进行的们提供了实现他们。 应用程序。例如,如果用户输入一个文本行中只使用了一个撇号,之后登陆数据库时,这个命令将会失败,因为了保护程序免受缓冲区溢出的,验证和过滤用户的输入已经实施很久了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论