window下的缓冲区溢出

window下的缓冲区溢出

ID:37501173

大小:446.40 KB

页数:31页

时间:2019-05-24

window下的缓冲区溢出_第1页
window下的缓冲区溢出_第2页
window下的缓冲区溢出_第3页
window下的缓冲区溢出_第4页
window下的缓冲区溢出_第5页
资源描述:

《window下的缓冲区溢出》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、信息安全技术信息安全技术windows下的缓冲区溢出原理windows下的缓冲区溢出原理主讲人:裴士辉e_mail:shihui_pei@sina.com计算机科学与技术学院计算机科学与技术学院栈溢出(stackoverflow)栈溢出(stackoverflow)#include#include高地址charshellcode[]="xebx1fx……";para1charlarge_string[128];para2intmain(intargc,char**argv){charbuffer[96];Returnaddint

2、i;Bufferlong*long_ptr=(long*)large_string;(96bytes)shellcodefor(i=0;i<32;i++)*(long_ptr+i)=(int)buffer;ifor(i=0;i<(int)strlen(shellcode);i++)long_ptrlarge_string[i]=shellcode[i];strcpy(buffer,large_string);低地址return0;}信息安全技术信息安全技术堆溢出(heapoverflow)堆溢出(heapoverflow)内存中的一些数据区•.text包含进程的代码•.

3、data包含已经初始化的数据(全局的,或者static的、并且已经初始化的数据)•.bss包含未经初始化的数据(全局的,或者static的、并且未经初始化的数据)•heap运行时刻动态分配的数据区•还有一些其他的数据区在.data、.bss和heap中溢出的情形,都称为heapoverflow,这些数据区的特点是:数据的增长由低地址向高地址计算机科学与技术学院计算机科学与技术学院信息安全技术信息安全技术关于heapoverflow关于heapoverflow比较少引起人们的关注,原因在于•比栈溢出难度更大•需要结合其他的技术,比如•函数指针改写•Vtable改写•Ma

4、lloc库本身的漏洞•对于内存中变量的组织方式有一定的要求计算机科学与技术学院计算机科学与技术学院信息安全技术信息安全技术指针改写指针改写要求:•先定义一个buffer,再定义一个指针溢出情形•当对buffer填充数据的时候,如果不进行边界判断和控制的话,自然就会溢出到指针的内存区,从而改变指针的值计算机科学与技术学院计算机科学与技术学院信息安全技术信息安全技术C++中的vtable函数指针改写C++中的vtable函数指针改写函数指针与函数体的绑定•Earlybinding,在编译过程中绑定•Latebinding,在运行过程中绑定C++的虚函数机制•编译器为每

5、一个包含虚函数的class建立起vtable,vtable中存放的是虚函数的地址•编译器也在每个class对象的内存区放入一个指向vtable的指针(称为vptr),vptr的位置随编译器的不同而不同,VC放在对象的起始处,gcc放在对象的末尾Overflow•设法改写vptr,让它指向另一段代码计算机科学与技术学院计算机科学与技术学院Vptr指针改写示例代码Vptr指针改写示例代码heap高地址……MyFuncvptrprintBufferbuf(11bytes)低地址对象地址如何发掘:期望让vptr指向构造的函数表,表中函数地址指向构造的代码。比较困难func1…n

6、opshellcodeVptr’信息安全技术信息安全技术windows下的缓冲区溢出windows下的缓冲区溢出实验内容编写具有缓冲区溢出漏洞的程序编写shellcode调试、测试环境MicrosoftVisualC++6.0MicrosoftWindows2000,XP计算机科学与技术学院计算机科学与技术学院信息安全技术信息安全技术编写具有缓冲区溢出漏洞的程序编写具有缓冲区溢出漏洞的程序在VisualC++开发环境中创建一个新的控制台应用程序,选择“AnApplicationthatsupportsMFC”并单击“Finish”。向程序中添加代码计算机科学与技术学院

7、计算机科学与技术学院voidoverflow(char*buff){CFilefile;CFileExceptioner;if(!file.Open(_T("overflow.txt"),File::modeRead,&er)){er.ReportError();return;}intx=file.GetLength();file.Read(buff,x);}int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;//initializeMFCandprintand

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

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

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