当前位置: 首页 > news >正文

长沙建站模板大全天津网站定制公司

长沙建站模板大全,天津网站定制公司,网站金融模版,创立外包网站栈溢出基本原理的简单讲解 #xff08;新手上路#xff0c;大牛还请自行跳过#xff0c;不足之处#xff0c;欢迎批评指正#xff09; 一 、预备知识#xff1a; 缓冲区溢出简单介绍 缓冲区溢出#xff1a;简单的说#xff0c;缓冲区溢出就是超长的数据向小缓冲区复…栈溢出基本原理的简单讲解 新手上路大牛还请自行跳过不足之处欢迎批评指正 一 、预备知识 缓冲区溢出简单介绍 缓冲区溢出简单的说缓冲区溢出就是超长的数据向小缓冲区复制导致数据超出了小缓冲区导致缓冲区其他的数据遭到破坏这就是缓冲区溢出。而栈溢出是缓冲区溢出的一种也是最常见的。只不过栈溢出发生在栈堆溢出发生在堆其实都是一样的。 栈的简单介绍 栈栈是一种计算机系统中的数据结构它按照先进后出的原则存储数据先进入的数据被压入栈底最后的数据在栈顶需要读数据的时候从栈顶开始弹出数据最后一个数据被第一个读出来是一种特殊的线性表。栈的操作常用的有进栈PUSH出栈POP还有常用的标识栈顶和栈底。 可以把栈想象成一摞扑克牌一样一张一张叠加起来。如下图的a1a2……an。 进栈PUSH将一个数据放入栈里叫进栈PUSH相当于在扑克牌的在最上面放了一张新的扑克牌。 出栈POP将一个数据从栈里取出叫出栈POP相当于在扑克牌的在最上面拿走了一张扑克牌。 栈顶常用寄存器ESPESP是栈指针寄存器其内存放着一个指针该指针永远指向系统栈最上面一个栈帧的栈顶。 栈底常用寄存器EBPEBP是基址指针寄存器其内存放着一个指针该指针永远指向系统栈最上面一个栈帧的底部。 二 、操作环境 操作系统Microsoft  Windows  XP  Professional  Service  Pack  3 辅助工具VC 6.0  、 OllyDbg 三 、 代码部分 这个代码十分简单先是定义了一本全局密码PASSWORD如果用户输入的数字和密码相等显示Success !  You  are right  !否则显示incorrect  password  ! 值得注意的是在 test 函数中开辟了一个8字节的局部数组空间然后再将用户输入的数据复制到这个数组空间中这就为栈溢出创造了条件看下结果 发现了一个有趣的结果密码12345是正确的密码这是我们自己定义的但是当我输入“qqqqqqqq”时显示的也是正确的结果下面用OD进行进一步的分析。 四 、 代码分析 将VC生成的exe放入OD OD暂停在了程序的入口点但是值得我们注意的是这个不是main函数的入口点而是编译器预先处理函数的暂停之处往下拉进入真正函数开始的地方 接着进入主函数 往下走输入“qqqqqq”然后来到此处 发现地址004010E0往后代码部分是进行判断由此推测函数TEST_1.0040100A就是我们的test函数还需要记住这时的EBP寄存器值0012FF80和函数下一条地址004010E5进入TEST_1.0040100A 然后向下单步来到00401059处它的上一步就是strcpy函数也就是造成溢出的函数此时观察EAX寄存器在堆栈图中的数据 其中0012FEC0地址处的数据71就是q的ASCII码表现形式一共输入了6个q所以看到6个71又因为代码部分是先将ret_num变量进行入栈且作为strcmp函数的返回值strcmpC/C函数比较两个字符串设这两个字符串为str1str2若str1str2则返回零若str1str2则返回负数若str1str2则返回正数。 我们输入的qqqqqq不是正确的密码所以大胆推测0012FEC8处的值就是ret_num往下看0012FECC和0012FED0处储存的值了吗就是要求大家注意的EBP和EIPcpu将要执行的下一条指令地址详细关于调用函数时候的堆栈入栈步骤还请大家自行查阅叙述起来篇幅过长此文只为简单讲解栈溢出的基本原理所以不做过多说明。 刚刚是输入qqqqqq的情况如果我们输入qqqqqqqqq试一下 发现0012FEC8处的值是71这就证明了此处存在栈溢出漏洞下面我们简单利用一下。 简单利用 由上文可知当ret_num的值为0的时候此时程序就会判定我们输入的密码正确还需知道由于intel系统设计原因其实就是内存中的数据按照4字节DWORD逆序存储所以ret_num为1时内存中存的是0x01000000如果我们输入包含8个字符的错误密码如“qqqqqqqq”那么字符串截断符0x00将写入ret_num变量这时溢出数组的一个字节0x00将恰好把逆序存放的ret_num变量改为0x00000000。 函数返回main函数中一看ret_num是0就会判断结果正确下面我们看下输入qqqqqqqq情况的堆栈图 发现0012FEC8的值变为了0x00000000此时判断正确 注意如果我们的密码当初是定义为1234567时当我们输入01234567的时候是不行的虽说0123457也是8位数但是01234567小于1234567返回值是-1在内存里将按照补码存负数那么字符串截断后符0x00淹没后变成0x00ffffff还是非0这样密码则错误 六 、 总结 这只是基本的栈溢出漏洞的讲解对于新手扫盲还是很有帮助的希望大家有所学习日后有机会也会为大家带来更多关于二进制漏洞的讲解和利用方法。新手第一次写文如若有误欢迎大家的指正和教导定虚心学习不懂之处也希望大胆询问交流创造浓郁和谐的学习氛围再见
http://www.ho-use.cn/article/10820912.html

相关文章:

  • 下载网站源文件免费购物的软件
  • 网站建设如何开票怎么做系统网站
  • 网站制作公司报价正确的网线的顺序图
  • 空间站免费版下载东莞市阳光网
  • 一级a做爰片51网站怎么在自己网站上做拼图
  • 网站友情链接模块毕设如何做网站
  • 网站点击赚钱怎么做当地自己的淘宝网站怎么做
  • 一图读懂制作网站公司logo在线设计
  • 学生个人网页制作代码模板怀化优化网站排名
  • 北京商城网站建设报价网站托管流程
  • 购买建立网站费怎么做会计凭证seo搜索引擎优化实战
  • linux系统服务器怎么做网站上海今天死亡新闻
  • 网站建设费如何记账自己域名做网站
  • 营销网站建设文章全球最受欢迎的网站排名
  • 百度推广营销方案百度关键词优化大
  • 深圳签网站泉州网站开发企业
  • 网站关闭多久排名会下降手机 网站开发aspx
  • 哈尔滨网站建设学校网站开发实训安排
  • 百度站长提交ip网站怎么做
  • 贵州做网站kuhugz如何制作局域网站
  • 安徽专业做网站的大公司莱芜网站建设设计外包
  • vps打开网站很慢室内装修设计案例
  • 福州 哈尔滨网站建设 网络服务海外代理服务器 免费
  • 企石网站仿做潍坊专业输送带产品介绍
  • 帮公司做网站简单网站系统
  • 超酷网站seo关键词
  • 网站搭建中114514wordpress页脚菜单
  • 服务器网站过多对排名wordpress移动端模板
  • 苏州网站建设推广咨询平台专门给别人做网站
  • 西安制作网站软件加盟创业商机网