缓冲区溢出攻击技术-栈溢出攻击技术

缓冲区溢出攻击技术-栈溢出攻击技术

ID:5425533

大小:921.00 KB

页数:50页

时间:2017-11-12

缓冲区溢出攻击技术-栈溢出攻击技术_第1页
缓冲区溢出攻击技术-栈溢出攻击技术_第2页
缓冲区溢出攻击技术-栈溢出攻击技术_第3页
缓冲区溢出攻击技术-栈溢出攻击技术_第4页
缓冲区溢出攻击技术-栈溢出攻击技术_第5页
资源描述:

《缓冲区溢出攻击技术-栈溢出攻击技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、缓冲区溢出攻击技术 -栈溢出攻击技术XXXTheArtemisProject2006-5-31北京大学计算机科学技术研究所内容缓冲区溢出攻击简介基本概念及发展历史背景知识(Linux&win32)缓冲区溢出攻击的原理栈溢出攻击如何工作?Linux:栈溢出,shellcodeWin32:栈溢出,shellcode总结2缓冲区溢出攻击的威胁3缓冲区溢出攻击的基本概念向缓冲区中填入过多的数据,超出边界导致数据外溢,覆盖了相邻的内存空间利用缓冲区溢出改写数据、改变程序执行流程干扰系统运行,破坏系统完全性,任意执行恶意代码4缓冲区溢出攻击的发展历史1980sMorris蠕虫-fin

2、gerd缓冲区溢出攻击1996AlephOne,SmashingtheStackforFunandProfit,Phrack491998Dildog:提出利用栈指针的方法完成跳转TheTaoofWindowsBufferOverflows1999DarkSpyrit:提出使用系统核心DLL中的JmpESP指令完成跳转,Phrack55M.Conover:基于堆的缓冲区溢出教程5缓冲区溢出攻击背景知识与技巧编译器、调试器的使用Linux:gcc+gdbWin32:VC6.0+OllyDbg进程内存空间结构汇编语言基本知识栈的基本结构函数调用过程6GCC编译器基础最著名的GN

3、U的Ansic/c++编译器gcc[options][filenames]编译:gcc-ctest.c生成test.o连接:gcc-otesttest.o同时搞定:gcctest.c-otestmake:用于控制编译过程MakefileHowTo7GDB调试器的使用断点相关指令break/clear,disable/enable/deletewatch–表达式值改变时,程序中断执行相关指令run/continue/next/stepattach–调试已运行的进程finish/return信息查看相关指令inforeg/break/files/args/frame/func

4、tions/…backtrace–函数调用栈print/fexp–显示表达式的值x/nfuaddr–显示指定内存地址的内容list–列出源码disassfunc–反汇编指定函数8VC6.0命令行环境变量我的电脑-属性-高级-环境变量PATH:C:ProgramFilesMicrosoftVisualStudioVC98Bin;C:ProgramFilesMicrosoftVisualStudioCommonMSDev98Bin;INCLUDE:C:ProgramFilesMicrosoftVisualStudioVC98IncludeLIB:C:

5、ProgramFilesMicrosoftVisualStudioVC98Lib命令行指令clsourcefilename–编译并链接9Win32平台调试器OllyDbg1.10汉化版32-bitassemblerlevelanalysingdebuggerbyOlehYuschukFree支持插件机制OllyUni:查找跳转指令功能SofticeIDAPro10背景知识-进程内存空间ESPEIP0xc00000000x80000000LinuxWin3211Linux进程内存空间Highestzone(0xc0000000-3G)进程环境参数:envstring

6、s&pointers进程参数:argvstrings&pointers,argc栈存储函数参数、本地参数和栈状态变量(返回地址,…)LIFO,向低地址增长堆动态分配变量(malloc)向高地址增长.bss:uninitializeddata.data:staticinitializeddata.text(0x80000000):指令,只读数据Example:./linux/memory/memory.c12Win32进程内存空间系统核心内存区间0xFFFFFFFF~0x80000000(4G~2G)为Win32操作系统保留用户内存区间0x00000000~0x800000

7、00(2G~0G)堆:动态分配变量(malloc),向高地址增长静态内存区间:全局变量、静态变量代码区间:从0x00400000开始栈:向低地址增长单线程进程:(栈底地址:0x0012FFXXXX)多线程进程拥有多个堆/栈Example:./win32/background/memory.c13汇编语言基础知识-寄存器寄存器名说明功能eax:累加器加法乘法指令的缺省寄存器,函数返回值ecx计数器REP&LOOP指令的内定计数器edx除法寄存器存放整数除法产生的余数ebx:基址寄存器在内存寻址时存放基地址esp栈顶指针寄存器SS

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

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

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