缓冲区溢出攻击技术-栈溢出攻击技术课件.ppt

缓冲区溢出攻击技术-栈溢出攻击技术课件.ppt

ID:57173388

大小:683.00 KB

页数:50页

时间:2020-08-02

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

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

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

2、性,任意执行恶意代码4缓冲区溢出攻击的发展历史1980sMorris蠕虫-fingerd缓冲区溢出攻击1996AlephOne,SmashingtheStackforFunandProfit,Phrack491998Dildog:提出利用栈指针的方法完成跳转TheTaoofWindowsBufferOverflows1999DarkSpyrit:提出使用系统核心DLL中的JmpESP指令完成跳转,Phrack55M.Conover:基于堆的缓冲区溢出教程5缓冲区溢出攻击背景知识与技巧编译器、调试器的使用Linu

3、x:gcc+gdbWin32:VC6.0+OllyDbg进程内存空间结构汇编语言基本知识栈的基本结构函数调用过程6GCC编译器基础最著名的GNU的Ansic/c++编译器gcc[options][filenames]编译:gcc-ctest.c生成test.o连接:gcc-otesttest.o同时搞定:gcctest.c-otestmake:用于控制编译过程MakefileHowTo7GDB调试器的使用断点相关指令break/clear,disable/enable/deletewatch–表达式值改变时,程

4、序中断执行相关指令run/continue/next/stepattach–调试已运行的进程finish/return信息查看相关指令inforeg/break/files/args/frame/functions/…backtrace–函数调用栈print/fexp–显示表达式的值x/nfuaddr–显示指定内存地址的内容list–列出源码disassfunc–反汇编指定函数8VC6.0命令行环境变量我的电脑-属性-高级-环境变量PATH:C:ProgramFilesMicrosoftVisualStud

5、ioVC98Bin;C:ProgramFilesMicrosoftVisualStudioCommonMSDev98Bin;INCLUDE:C:ProgramFilesMicrosoftVisualStudioVC98IncludeLIB:C:ProgramFilesMicrosoftVisualStudioVC98Lib命令行指令clsourcefilename–编译并链接9Win32平台调试器OllyDbg1.10汉化版32-bitassemblerlevelanalysing

6、debuggerbyOlehYuschukFree支持插件机制OllyUni:查找跳转指令功能SofticeIDAPro10背景知识-进程内存空间ESPEIP0xc00000000x80000000LinuxWin3211Linux进程内存空间Highestzone(0xc0000000-3G)进程环境参数:envstrings&pointers进程参数:argvstrings&pointers,argc栈存储函数参数、本地参数和栈状态变量(返回地址,…)LIFO,向低地址增长堆动态分配变量(malloc)向高

7、地址增长.bss:uninitializeddata.data:staticinitializeddata.text(0x80000000):指令,只读数据Example:./linux/memory/memory.c12Win32进程内存空间系统核心内存区间0xFFFFFFFF~0x80000000(4G~2G)为Win32操作系统保留用户内存区间0x00000000~0x80000000(2G~0G)堆:动态分配变量(malloc),向高地址增长静态内存区间:全局变量、静态变量代码区间:从0x0040000

8、0开始栈:向低地址增长单线程进程:(栈底地址:0x0012FFXXXX)多线程进程拥有多个堆/栈Example:./win32/background/memory.c13汇编语言基础知识-寄存器寄存器名说明功能eax:累加器加法乘法指令的缺省寄存器,函数返回值ecx计数器REP&LOOP指令的内定计数器edx除法寄存器存放整数除法产生的余数ebx:基址寄存器在内存寻址时存放基地址esp

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

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

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