摘要:在计算机运用非常普遍的现代,网络攻击事件时常发生,而缓冲区溢出攻击时最典型、最常见的攻击方式。许多攻击者会利用缓冲区溢出漏洞,造成程序运行失败,系统崩溃,用户信息泄露,服务器瘫痪等严重后果,对使用者造成不可挽回的损失。
为了揭开缓冲过去溢出攻击的神秘面纱,本文在了解缓冲区的概念、缓冲区溢出的特点和类型的基础上,利用OllyDbg、UltraEdit、Visual C++ 6.0等工具实现了多种缓冲区溢出攻击,并对缓冲区溢出攻击的保护机制做了深入地研究。
关键词:溢出攻击;Shellcode;GS;ASLR;DEP ;SafeSEH
目录
摘要
Abstract
1绪论-1
1.1研究背景-1
1.2研究意义-2
1.3研究方法-2
1.3.1实验法-2
1.3.2文献研究法-2
1.4本文的组织安排-2
2缓冲区溢出概述-3
2.1缓冲区溢出的概念-3
2.2造成溢出的原因-3
2.2.1边界检查机制的缺失-3
2.2.2堆、栈的可执行性-4
2.3缓冲区溢出的分类-4
2.3.1栈溢出-4
2.3.2堆溢出-5
2.4缓冲区溢出的特性-6
2.4.1破坏性-6
2.4.1隐蔽性-6
3栈溢出-6
3.1覆盖函数返回地址-7
3.2覆盖邻接变量-10
3.3注入shellcode-13
3.4利用JMP ESP指令-17
4堆溢出-19
4.1攻击同步线程函数-19
4.2攻击异常处理机制-25
5溢出攻击的保护机制-27
5.1 GS安全编译选项-27
5.2内存随机化ASLR-29
5.2.1 P.E.B地址随机化-30
5.2.2映像随机化-31
5.2.3堆、栈随机化-31
5.3数据执行保护DEP-32
5.4 针对堆溢出的其它保护机制-34
5.4.1 Heap Cookie-34
5.4.2元数据加密-34
5.4.3 SafeSEH-34
6结束语-36
致谢-37
参考文献-38