- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2.8缓冲区溢出(bufferoverflow)从一个对话框说起……
WindowsIA-32系统的内存结构计算机运行时,系统将内存划分为3个段,分别是代码段、数据段和堆栈段。 代码段数据只读,可执行。在代码段一切数据不允许更改。在代码段中的数据是在编译时生成的2进制机器代码,可供CPU执行。 数据段静态全局变量是位于数据段并且在程序开始运行的时候被加载。可读、写。 堆栈段放置程序运行时动态的局部变量,即局部变量的空间被分配在堆栈里面。可读、写。
缓冲区溢出原理Windows系统的内存结构
程序的内存分配由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。2、堆区(heap)—由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式倒是类似于链表。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放。5、程序代码区—存放函数体的二进制代码。
例子程序
//main.cppinta=0;全局初始化区char*p1;全局未初始化区main(){intb;栈chars[]=abc;栈char*p2;栈char*p3=123456;123456\0在常量区,p3在栈上。staticintc=0;全局(静态)初始化区p1=(char*)malloc(10);p2=(char*)malloc(20);分配得来的10和20字节的区域就在堆区。}strcpy(p1,123456);123456\0放在常量区,编译器可能会将它与p3所指向的123456优化成一个地方。
缓冲区溢出的基本原理(1)缓冲区溢出源于程序执行时需要存放数据的空间,也即我们所说的缓冲区。缓冲区的大小是程序执行时固定申请的。然而,某些时候,在缓冲区内装载的数据大小是用户输入的数据决定的。程序开发人员偶尔疏忽了对用户输入的这些数据作长度检查,由于用户非法操作或者错误操作,输入的数据占满了缓冲区的所有空间,且超越了缓冲区边界延伸到缓冲区以外的空间。我们称这个动作为缓冲区溢出。
缓冲区溢出的基本原理(2)缓冲区溢出是由于系统和软件本身存在脆弱点所导致的。例如目前被广泛使用的C和C++,这些语言在编译的时候没有做内存检查,即数组的边界检查和指针的引用检查,也就是开发人员必须做这些检查,可是这些事情往往被开发人员忽略了;标准C库中还存在许多不安全的字符串操作函数,包括:strcpy(),sprintf(),gets()等等,从而带来了很多脆弱点,这些脆弱点也便成了缓冲区溢出漏洞。
认识缓冲区溢出【引例】把1升的水注入容量为0.5升的容量中……第一次大规模的缓冲区溢出攻击是发生在1988年的Morris蠕虫,它造成了6000多台机器被瘫痪,损失在$100000至$10000000之间,利用的攻击方法之一就是fingerd的缓冲区溢出。缓冲区溢出攻击已经占了网络攻击的绝大多数,据统计,大约80%的安全事件与缓冲区溢出攻击有关。
Windows缓冲区溢出实例分析/**文件名:overflow.cpp*功能:演示Windows缓冲区溢出的机制*/#includestdio.h#includestring.hcharbigbuff[]=“aaaaaaaaaa;//10个avoidmain(){ charsmallbuff[5];//只分配了5字节的空间 strcpy(smallbuff,bigbuff);}
补充ESP:为栈指针,用于指向栈的栈顶EBP:该指针指向系统栈最上面一个栈的底部EIP:是指令寄存器,存放当前指令的下一条指令的地址
利用OllyDbg调试工具加载overflow.exe文件
执行strcpy()函数的过程
溢出结果
缓冲区溢出的危害可以导致程序运行失败、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
您可能关注的文档
- 迅雷批发提取软件使用方法.pdf
- 西门子wincc常见问题解答小结faqs h.pdf
- 西部户外合作-2015活动上徒步类.pdf
- 区职务发明专利奖励办法.pdf
- 考试申论真题及答案.pdf
- 牙周病学一单元概述.pdf
- 化妆品化学检验方法卫生网.pdf
- 边界网关产品线技术bdutm-mh.pdf
- 监理课件质量控制网校考点串讲.pdf
- 标贴说明书铝箔纸pfos.pdf
- 《天文学上的旷世之争》课件21张2024-2025学年统编版高中语文选择性必修下册.pptx
- 《一个消逝了的山村》课件26张2024-2025学年高中语文统编版选择性必修下册第二单元.pptx
- 《秦腔》课件45张2024-2025学年高中语文统编版选择性必修下册.pptx
- 《记念刘和珍君》教案 高二语文选择性必修(中).doc
- 第《阿Q正传》(备课堂)2024-2025学年高二语文同步备课系列(统编版选择性必修下册).pptx
- 《《登快阁》》(备课堂)2024-2025学年高二语文同步备课系列(统编版选择性必修下册).pptx
- 第三单元教案 高二语文.docx
- 第四单元教案 高二语文.docx
- 《扬州慢》课件-高二语文统编版(2019)选择性必修下册 - 副本.pptx
- 蜀相课件-高二语文统编版(2019)选择性必修下册.ppt
最近下载
- 顶管专项施工组织设计与对策.pdf
- 小学书法社团教学计划(共14篇).docx
- 企业管理咨询 时段四作业(第七-八章).docx VIP
- 《抗生素合理使用》课件.pptx VIP
- 肉牛养殖技术:肉牛体脂肪与肌肉的沉积规律.doc
- Haier海尔家用电热水器 FCD-JTHC40-III 使用说明书.PDF VIP
- NFPA 855-2023 Standard for the Installation of Stationary Energy Storage Systems 固定储能系统安装标准.pdf
- 0508-美容美发与造型(美容)专业国家技能人才培养工学一体化课程设置方案(试用).docx VIP
- 堆垛机维护保养手册.doc
- 《小狗的房子》教学设计4篇.docx
文档评论(0)