缓冲区溢出攻击原理.ppt

上传人:得****1 文档编号:75767669 上传时间:2023-03-04 格式:PPT 页数:17 大小:268.50KB
返回 下载 相关 举报
缓冲区溢出攻击原理.ppt_第1页
第1页 / 共17页
缓冲区溢出攻击原理.ppt_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《缓冲区溢出攻击原理.ppt》由会员分享,可在线阅读,更多相关《缓冲区溢出攻击原理.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1.1.缓冲区溢出攻击原理缓冲区溢出攻击原理堆栈(已初始化数据)数据段(未初始化数据)代码段一个进程的内存映像一个进程的内存映像文本段(代码段)文本段(代码段)文本区域是由程序确定的,包括代码(指令)和只读数据。该区域相当于可执行文件的文本段。这个区域通常被标记为只读,任何对其写入的操作都会导致段错误(segmentation violation数据段数据段 数据区域包含了已初始化和未初始化的数据。静态变量储存在这个区域中 堆栈堆栈 用于函数调用,用于返回用于函数调用,用于返回高低1)缓冲区溢出攻击缓冲区溢出攻击(实例实例)main()char passwd8=2e4rfe;char your

2、passwd8=;again:puts(please input passwd?);gets(yourpasswd);if(strcmp(yourpasswd,passwd)=0)goto ok;puts(passwd error);goto again;exit(-2);ok:puts(correct!);/do work you wantreturn 0;程序的设计功能:程序的设计功能:输入正确的口令后做某项工作(否则重复要求输入口令)演示:演示:输入精心计划好的字串打乱设计期望的执行逻辑,从而绕过某些口令2)栈溢出攻击)栈溢出攻击(函数调用函数调用)实在参数实在参数返回地址返回地址基地址

3、基地址栈底栈底(内存高端内存高端)栈栈增增长长方方向向局部变量局部变量 1)首先把参数压入栈;2)然后保存命令寄存器(IP)中的内容作为返回地址(RET);3)第三个放入堆栈的是基址寄存器(FP);4)然后把当前的栈指针(SP)拷贝到FP,作为新的基地址;5)最后为本地变量留出一定空间函数调用与堆栈函数调用与堆栈 缓冲区溢出攻击缓冲区溢出攻击缓冲区寄存器EIPargcargvESP EIPbuf ESP 低高进入函数后的堆栈拷贝超长字符数组到缓冲区中释放局部变量ESP指向返回地址从堆栈中取出的EIP,执行shell codeEIPESP EIPEIP例子intAFunc(inti,intj)i

4、ntm=3;intn=4;m=i;n=j;BFunc(m,n);return8;intBFunc(inti,intj)intm=1;intn=2;m=i;n=j;returnm;intmain()AFunc(5,6);return0;6当前当前EBP当前当前ESPAFunc(5,6);push6push5call_AFuncaddesp+8语句执行前的语句执行前的EBP语句执行前的语句执行前的ESP函数调用中栈的工作过程5EIP_AFuncpushebpmovebp,espsubesp,48h/压入环境变量压入环境变量/为局部变量分配空间为局部变量分配空间EBP48hEDIESIEBX3(m=

5、3)4(n=4)6当前当前EBP当前当前ESPAFunc(5,6);call_AFuncaddesp+8语句执行前的语句执行前的EBP语句执行前的语句执行前的ESP函数调用中栈的工作过程5EIP_AFuncreturn0;popedipopesipopebxaddesp,48h/栈校验栈校验popebpretEBP48hEDIESIEBX3(m=3)4(n=4)当缓冲区溢出发生时intAFunc(inti,intj)intm=3;intn=4;charszBuf8=0;strcpy(szBuf,“Thisisaoverflowbuffer!”);m=i;n=j;BFunc(m,n);retur

6、n8;#include#includevoidinput()intaccess(0);/access为1时表示登录正确得到权限,初始为0charpassword4;/用于存储用户输入的登录密码coutpassword;if(strcmp(password,1988)=0)/比较两个串是否相等,如果相等返回值为0access=1;/两串相等,将权限变量赋值1if(access!=0)/access非零,则登录成功cout登录成功endl;else/access为零,登录失败couterror;voidmain()input();/函数调用example.cexample.cvoidvoidfun

7、ction(charfunction(char*str)*str)charcharbuffer16;buffer16;strcpy(buffer,strstrcpy(buffer,str););voidvoidmain()main()charcharlarge_string256;large_string256;intinti;i;for(i=0;i255;i+)for(i=0;i255;i+)large_stringi large_stringi=A A;function(large_string);function(large_string);*strRet(Function后的指令地址后的指令地址)基地址基地址FPbuffer栈底(内存高端)程序运行结果:程序运行结果:buffer、FP、RET、甚至甚至Str本身等的值都变成了本身等的值都变成了A攻击原理:攻击原理:改变改变RETRET的值;的值;用特殊的可执行指令来改变用特殊的可执行指令来改变 这样就可以达到攻击目的。这样就可以达到攻击目的。RETRET的位置是可以被计算出来的的位置是可以被计算出来的(偏移值偏移值)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com