欢迎来到天天文库
浏览记录
ID:57173388
大小:683.00 KB
页数:50页
时间:2020-08-02
《缓冲区溢出攻击技术-栈溢出攻击技术课件.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
此文档下载收益归作者所有