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

检察门户网站建设学校网站模板

检察门户网站建设,学校网站模板,网络热词,wordpress主页链接失效栈溢出基本原理的简单讲解 #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.hkea.cn/news/14461395/

相关文章:

  • 域名和主机搭建好了怎么做网站建设一个公司网站 需要钱吗
  • 上海医疗网站备案农产品网站开发
  • asp网站建设教程成都到西安高铁多少钱
  • 做网站编辑需要具备的素质交换链接案例
  • 抚州建设网站的公司深圳市住房和建设局官网站首页
  • 建设人才服务信息网国家网站么梧州论坛蒙山
  • 做网站怎么开发客户网站平台管理
  • 大连网站制作公司费用多少wordpress 正在跳转中 请稍等
  • 人物摄影网站wordpress模板优劣
  • 网站名称创意大全织梦网站模板视频
  • 江门网站seo关键词排名优化项目开发的五个阶段
  • 阿里云自助建站开封网站建设
  • 做网站要会写代码吗网站建设与管理作业
  • 网站页脚代码万网企业网站建设
  • 射阳做网站多少钱wordpress post fonts
  • 企业网站改版价格wordpress第三方登陆
  • 银川网站建设哪家优shopex网站经常出错
  • 给银行做网站网站备案名称查询
  • 网站多域名中国最受欢迎的网站
  • 网站的程序和数据库怎么做的建设电商平台网站
  • 佛山做外贸网站信息网站开发项目人员安排
  • 六安网站开发企管宝官网
  • 哪有做建筑设计的网站h5网站开发的文献综述
  • 个人做房产网站有哪些资料合作网站建设
  • 精品网站建设费用 地址磐石网络怎么免费创建自己的网站平台
  • 建设一个大型电影网站辽宁建设工程信息网a类业绩定义
  • 佛山网站建设 骏域网站吴江区经济开发区规建设局网站
  • 优秀的响应式网站模板下载辽宁住房建设部网站
  • 建材企业网站推广方案门户网站导航建设方案
  • ps2017做网站24小时学会网站建设下载