软件漏洞精子分析软件免费下载精要怎么样

《漏洞战争:软件漏洞分析精要》预售中…… - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了8378字,被2人关注,获得了0个喜欢
《漏洞战争:软件漏洞分析精要》预售中……
预售地址China-Pub:京东:淘宝:编辑推荐《漏洞战争:软件漏洞分析精要》是这些年来难得一见的系统、全面深入分析漏洞攻防心要与战术的书籍。《漏洞战争:软件漏洞分析精要》结合经典的漏洞案例,从攻防思路、分析方法与实战等方面对漏洞攻防做了详细的阐述。既照顾了全局的视野,又不失细节上的周到,对于有志于安全事业并想在安全技术分析上有所提升的读者,这是一本可信赖的必备书籍。正如wushi老师所说:"……对照本书动手调试这些经典漏洞,我相信只要认真做一遍,功力会大增。"还犹豫什么呢,好书,一本就够!内容简介《漏洞战争:软件漏洞分析精要》系统地讲解软件漏洞分析与利用所需的各类工具、理论技术和实战方法,主要涉及Windows 和Android 系统平台。《漏洞战争:软件漏洞分析精要》根据不同的软件漏洞类型划分,比如堆栈溢出、沙盒逃逸、类型混淆、UAF、内核漏洞等,同时又针对当前流行的移动安全,加入Android 平台上的漏洞分析与利用。以精心挑选的经典漏洞为例,以分享漏洞的分析技巧和工具为主,对这些漏洞的成因、利用及修复方法进行详细讲解,旨在"授之以渔"。《漏洞战争:软件漏洞分析精要》最大的特点是以各种类型的经典漏洞作为实战讲解,摒弃空头理论,几乎是"一本用调试器写出来的书"。《漏洞战争:软件漏洞分析精要》适合计算机相关专业的本科及研究生,信息安全爱好者,软件安全及移动安全相关的安全从业人员,软件开发与测试人员、黑客等阅读。目录第1 章 基础知识 111 漏洞的相关概念 1111 什么是漏洞 1112 漏洞的价值 1113 0Day 漏洞 2114 PoC 与Exploit 212 为什么要分析漏洞 213 常用分析工具 3131 IDA-反汇编利器 3132 OllyDbg-破解与逆向常用调试器 4133 Immunity Debugger-漏洞分析专用调试器 4134 WinDbg-微软正宗调试器 5135 GDB-Linux 调试器 6136 JEB-Android 反编译器 7137 其他 814 常见的漏洞分析方法 8141 静态分析 8142 动态调试 9143 源码分析 9144 补丁比较 9145 污点追踪 1015 学习资源 11151 站点分享 11152 书籍推荐 1216 本章总结 13第2 章 栈溢出漏洞分析 1421 栈溢出简史 1422 栈溢出原理 1523 CVE- Adobe Reader TTF 字体SING 表栈溢出漏洞 16231 LuckyCat 攻击事件 16232 漏洞描述 18233 分析环境 18234 基于字符串定位的漏洞分析方法 19235 样本Exploit 技术分析 20236 样本Shellcode 恶意行为分析 26237 漏洞修复 2924 CVE- Microsoft RTF 栈溢出漏洞 30241 林来疯攻击事件 30242 漏洞描述 31243 分析环境 31244 RTF 文件格式 32245 基于栈回溯的漏洞分析方法 33246 漏洞利用 41247 Office 2003 与Office 2007 Exploit 通用性研究 42248 漏洞修复 4525 CVE- Microsoft Excel TOOLBARDEF Record 栈溢出漏洞 51251 漏洞描述 51252 分析环境 52253 基于污点追踪思路的漏洞分析方法 52254 漏洞修复 5926 阿里旺旺ActiveX 控件imageMandll 栈溢出漏洞 60261 漏洞描述 60262 分析环境 60263 针对ActiveX 控件的漏洞分析方法 60264 漏洞利用 6327 CVE- Microsoft Office MSCOMCTLocx 栈溢出漏洞 65271 Lotus Blossom 行动 65272 漏洞描述 65273 分析环境 65274 基于OffVis 工具的Office 漏洞分析方法 66275 漏洞修复 7128 总结 72第3 章 堆溢出漏洞分析 7331 堆溢出简史 7332 堆溢出原理 7433 堆调试技巧 79331 堆尾检查 80332 页堆 8134 CVE- Microsoft Cinepak Codec CVDecompress 函数堆溢出漏洞 85341 漏洞描述 85342 分析环境 85343 基于HeapPage 的堆漏洞分析方法 85344 漏洞修复 10135 CVE- Microsoft Windows Media Player winmmdll MIDI 文件堆溢出漏洞 104351 关于"蜘蛛"漏洞攻击包(Zhi-Zhu Exploit Pack) 104352 漏洞描述 105353 分析环境 105354 MIDI 文件格式 105355 基于导图推算的漏洞分析方法 107356 漏洞利用 122357 补丁比较 13036 CVE- Microsoft DirectShow quartzdll m2p 文件堆溢出漏洞 130361 漏洞描述 130362 基于HTC 的漏洞分析方法 131363 漏洞修复 13437 CVE- Internet Exporter MSHTMLdll CalculateMinMax 堆溢出漏洞 135371 在Pwn2Own 黑客大赛上用于攻破IE9 的漏洞 135372 分析环境 135373 基于HPA 的漏洞分析方法 135374 通过信息泄露实现漏洞利用 149375 漏洞修复 16138 小结 163第4 章 整数溢出漏洞分析 16441 整数溢出简史 16442 整数溢出原理 164421 基于栈的整数溢出 165422 基于堆的整数溢出 16643 CVE- Microsoft Data Access Components 整数溢出漏洞 167431 在Pwn2Own 黑客大赛上用于攻破IE8 的漏洞 167432 基于堆分配记录的漏洞分析方法 168433 补丁比较 17644 CVE- Adobe Reader TrueType 字体整数溢出漏洞 178441 漏洞描述 178442 PDF 文件格式与常用分析工具 178443 基于条件记录断点的漏洞分析方法 182444 补丁分析 19645 CVE- Firefox 字符串替换整数溢出漏洞 197451 漏洞描述 197452 基于源码调试的漏洞分析方法 197453 源码比对 20746 CVE- Internet Explorer VML COALineDashStyleArray 整数溢出漏洞 208461 在Pwn2Own 黑客大赛上攻破IE10 的漏洞 208462 基于类函数定位的漏洞分析方法 208463 利用信息泄露实现漏洞利用 22347 总结 226第5 章 格式化字符串漏洞分析 22751 格式化字符串漏洞简史 22752 格式化字符串漏洞的原理 22753 CVE- Sudo sudo_debug 函数格式化字符串漏洞 234531 漏洞描述 234532 通过源码比对分析漏洞 23454 CVE- VMware OVF Tool 格式化字符串漏洞 235541 漏洞描述 235542 基于输出消息的漏洞定位方法 235543 漏洞利用 23955 总结 242第6 章 双重释放漏洞分析 24361 双重释放漏洞简史 24362 双重释放漏洞的原理 24363 CVE- Windows 传真封面编辑器fxscoverexe 双重释放漏洞 246631 漏洞描述 246632 通过栈回溯和堆状态判定漏洞类型 246633 通过补丁比较确定漏洞成因及修复方法 24964 CVE- Adobe Flash Player 双重释放漏洞 251641 GreedyWonk 行动 251642 静态分析攻击样本 251643 Shellcode 自动化模拟执行 263644 基于ROP 指令地址的反向追踪 26565 总结 273第7 章 释放重引用漏洞分析 27471 释放重引用(Use After Free,UAF)漏洞简史 27472 UAF 漏洞的原理 27473 CVE- Firefox mChannel UAF 漏洞 277731 漏洞描述 277732 通过动态调试快速定位漏洞源码 277733 漏洞利用 285734 源码比对 28674 CVE- Microsoft IE CGenericElement UAF 漏洞 287741 "水坑"攻击事件 287742 通过HPA 快速定位漏洞对象 287743 逆向分析IE 引擎对JavaScript 代码的解析 290744 追本溯源:探寻漏洞的本质 321745 漏洞利用 32475 CVE- Adobe Reader ToolButton UAF 漏洞 326751 "Epic Turla"网络间谍攻击行动 326752 使用peepdf 分析PDF 恶意样本 326753 漏洞利用 33876 CVE- Adobe Flash Player Workers ByteArray UAF 漏洞 340761 漏洞描述 340762 分析ActiveScript 虚拟机源码辅助漏洞调试 340763 Flash JIT 调试插件与符号文件 353764 漏洞利用 354765 漏洞修复 36077 本章总结 360第8 章 数组越界访问漏洞分析 36181 数组越界与溢出的关系 36182 数组越界访问漏洞原理 36183 CVE- Adobe Flash Player 数组越界访问漏洞 363831 漏洞描述 363832 解决安装旧版Flash Player 的限制问题 364833 通过Perl 脚本辅助分析样本 365834 搭建服务器重现漏洞场景 371835 通过修改样本代码定位漏洞 373836 通过构造信息泄露利用漏洞 376837 通过搜索指令序列分析补丁 38084 CVE- OpenSSL TLS 数组越界访问漏洞("心脏出血") 382841 漏洞描述 382842 基于源码对比与跟踪的漏洞分析方法 383843 利用漏洞盗取网站账号 38985 本章总结 394第9 章 内核漏洞分析 39591 Windows 内核漏洞漫谈 39592 Windows 内核调试环境搭建 39693 常见内核漏洞原理与利用 398931 漏洞成因分析 398932 漏洞利用 40594 360 安全卫士bregdrvsys 本地提权漏洞分析 414941 漏洞描述 414942 基于导出函数和IO 控制码的追踪分析 41495 CVE- Windows Afdsys 本地提权漏洞 423951 漏洞描述 423952 从利用代码到漏洞函数的定位分析 423953 补丁比较 42696 CVE- Windows win32ksys EPATHOB 指针未初始化漏洞 426961 漏洞描述 426962 通过IDA 定义结构体辅助分析 427963 漏洞利用 43197 CVE- Windows AFDsys 双重释放漏洞(Pwn2Own 2014) 437971 Pwnie Awards 2014"最佳提权漏洞奖"得主 437972 基于IOCTL 处理函数自动追踪记录的分析方法 437973 漏洞利用 454974 补丁分析 46098 本章总结 462第10 章 Android 平台漏洞分析 463101 Android 平台漏洞简史 463102 Android 平台漏洞分类 466103 常见的漏洞分析方法 4671031 APK 静态分析 4671032 smali 动态调试 4681033 so 库动态调试 4741034 补丁源码比对 4751035 系统Java 源码调试 4771036 系统C/C++源码调试 4861037 Android 内核源码调试 488104 智能插座漏洞分析 4921041 漏洞描述 4921042 静态逆向分析 4921043 利用漏洞控制网络上的任意插座 4971044 总结 502105 CVE- Android 系统签名漏洞 5021051 漏洞描述 5021052 Android 签名机制 5031053 漏洞重现 5091054 漏洞原理分析 5141055 漏洞修复 516106 CVE- Android WebKit UAF 漏洞 5161061 漏洞描述 5161062 漏洞利用 5171063 通过补丁源码分析漏洞成因 524107 CVE- Android 内核Futex 提权漏洞(Towelroot) 5281071 Android 设备Root 神器-Towelroot 5281072 通过内核源码调试分析漏洞 5281073 漏洞利用 5481074 漏洞修复 554108 本章总结 554第11 章 其他类型的漏洞分析 555111 本章引言 555112 CVE- JAVA Applet reflection 类型混淆代码执行漏洞 5551121 漏洞描述 5551122 类型混淆漏洞 5551123 Java 安全机制 5561124 漏洞分析与利用 5581125 漏洞修复 562 年漏洞之王-Java 563113 CVE- Microsoft Internet Explorer 11 dfsvc 组件沙盒逃逸漏洞 5641131 漏洞描述 5641132 IE 沙盒保护原理 5641133 IE 沙盒攻击面分析 5691134 CVE- 漏洞分析与利用 570114 CVE- Adobe Acrobat Reader MoveFileEx IPC Hook 竞争条件(沙盒逃逸)漏洞 5721141 Therac-25 医疗事故 5721142 竞争条件漏洞原理 5731143 CVE- 漏洞描述 5741144 Adobe 沙盒简介 5741145 利用漏洞实现沙盒逃逸 575115 本章总结 578第12 章 软件漏洞发展趋势 579121 软件漏洞领域的新挑战 579122 移动终端漏洞发展趋势 579123 云计算平台漏洞发展趋势 581124 物联网漏洞发展趋势 583125 本章总结 585前言为什么写这本书不知道大家是否曾有过这样的经历:● 无法读懂网上很多软件漏洞分析文章,不理解里面的漏洞成因和漏洞利用技巧。● 即使读懂某篇软件漏洞分析文章,自己仍无法独立完成相同漏洞的分析。如果文章中所使用的测试环境与软件版本跟自己使用的不一样,则顿时更不知如何入手。● 很多软件漏洞分析文章贴出存在漏洞的汇编代码,指出导致漏洞的原因,即"结论式分析",但如何定位到此段代码并无解释,看完之后,仍不知如何快速定位,缺乏可借鉴的思路。带着这些问题,相信读者会在本书中找到想要的答案。再来聊下本书的一些写作经历,开始写作本书始于2012年5月,最初是"爱无言"找到我,说大家合作写一本关于软件漏洞案例分析的书,因为那段时间我在博客上每周都会分享一两篇软件漏洞分析的实际案例,而当时国内还没有专门写软件漏洞案例的专著(几年前出版的《0Day安全:软件漏洞分析技术》主要偏向堆和栈溢出及内核方面的漏洞分析,实际案例较少,且"爱无言"也是作者之一)。就这样,两人开始谋划,写书的念头就此产生。后来,我又拉了两位朋友加入,然后几人列出大纲目录,但最后因为种种原因,只剩下我一人独自完成本书创作,中途也多次想放弃,但庆幸的是,历时3年半,终于2015年12月完稿,共历时4年后出版。就这样,一本原为"合著"的书就写成了"专著"。由于朋友的退出,以及写作速度较慢,中途停写半年,已原本打算放弃。后来,有一天,编辑"皎子"找我聊了一些出书的想法。就这样,一本原打算沉留箱底的"残卷"再次被"激活"。之后的写书经历还算顺利,又历时一年左右完稿,比较符合预期,遗留心底多年的梗总算可以释怀了。相信一些读者看完本书目录之后会有一些疑问,也相信其中一些疑问也是我在定位本书方向时考虑的,所以有必要在此谈一谈。Q:本书与《0day 安全:软件漏洞分析技术》有何区别?A:0day安全一书主要是讲Windows平台下堆栈溢出和内核提权的漏洞分析技术,还涉及部分格式化字符串漏洞,从基础讲起,最后是实例分析。本书则完全是以真实的漏洞为实例以分享漏洞分析时的一些技巧,以漏洞类型的不同来分享不同的漏洞分析技巧,可以说是"用调试器写出来的一本书",而且综合考虑当前热门的移动安全,特意加入Android平台上的漏洞分析章节,从Java层、Native层和内核层等方向分享不同的调试分析方法。从难度而言,本书比《0day安全:软件漏洞分析技术》一书更难,可以将本书当作进阶版,搭配学习。Q:本书列举的许多漏洞实例网上早有分析文章,为何还写这本书?A:著书的宗旨在于"授人以鱼,不如授人以渔"。如果读者经常看网上的漏洞分析文章,就会发现一个常见现象:它们大多是"结论性分析",而非"思路性分析"。换句话说,就是贴出存在漏洞的汇编代码,然后直接给出漏洞成因的结论,至于如何定位到漏洞代码,并没有给出分析思路。正因为如此,即使你看懂了Vupen漏洞军火商写的分析文章,也不代表你看完后就能独立分析出来,甚至在调试之后,你还会发现Vupen在一些文章里留有"坑",故意省略或写错某些关键内容,如果没有自己实际调试一遍是很难发现这些问题的。相信有一定软件漏洞分析经验的朋友会注意到,软件漏洞分析的大部分时间是花费在寻找和定位漏洞代码,而非分析存在漏洞的代码。对于有一定编程经验和漏洞基础的读者,如果直接给一段漏洞代码,可能很容易就看出来,但像Adobe和Windows这些复杂的软件或系统,在千千万万的代码行中找到漏洞代码是有一定难度的。因此,本书的重点是讲授如何快速地定位漏洞代码,针对不同漏洞类型采取不同的分析技巧,以帮助大家快速地分析出漏洞成因,制定检测、防御与修复方案。书中的漏洞实例分析技巧是可以长期运用和延伸的,这才是本书的核心价值。Q:如何借助本书提升自身的软件漏洞分析能力?.  A:本书主要面向有一定软件漏洞基础的读者,如果缺乏这方面的基础,且有一定C语言和汇编语言基础,建议提前看看《0day安全:软件漏洞分析技术》一书。软件漏洞分析是一门实践性比较强的安全领域分支,需要许多实际动手的调试经验,因此建议大家在看本书时,一边看一边动手调试,以加深理解,就像骑自行车一样,熟练之后,哪怕十年未碰,也依然会骑。本书在分析漏洞时,也尽量以思路性地描述为主,以讲解分析漏洞时的思考方式和常用技巧,包括工具和方法论,因此大家在阅读时,应该掌握书中介绍的思考方式、工具运用及分析技巧,毕竟单个漏洞案例本身是会过时的,但技巧性的东西总是可以借鉴和扩展。记得大一上第一节历史课时,老师说过这样一句话,如果在未来的某一天,你在和朋友闲聊时,能够运用到历史课上学到的知识,哪怕一句话作为谈资,那这历史课就算没白学。同样地,我也希望未来大家在分析软件漏洞时,本书能够提供一些帮助,哪怕是一个分析技巧,一个工具使用,我也觉得这4年的付出算值了。纵观近五年,各种APT攻击事件频发,包括知名企业,甚至国家级单位都曾遭受到漏洞攻击。每年都有一款产品的漏洞被频繁用于网络攻击,比如2012年的Office漏洞(还记得经典的CVE-吗?),2013年的Java漏洞,2014年的Internet Explorer漏洞,2015年Adobe Flash漏洞。PC端上的软件漏洞一直在逐年增加,虽然厂商在不断地推出各种安全机制,但漏洞利用技术的发展从未间断,Exploiter们依然生存得很好。同时,互联网早已步入移动化时代,伴随着PC软件漏洞攻击事件的频发,移动端的漏洞攻击也在逐年增长。因此,笔者结合PC端(Windows)与移动端(Android)平台上的漏洞案例,历时近4年,将自身的实战经验整理成本书。求学之路经常有人问我:"一个医学生为什么会转行做安全?",通常我都会这么回答:"因为小说看多了"。大一时,由于喜欢看黑客小说,比如《黑客传说》《地狱黑客》《指间的黑客》,就去图书馆找一些黑客书籍学习,每天中午都不休息,几乎天天都泡在图书馆看书,甚至翘课去看计算机书。大四才买计算机,在此之前一直都只能去网吧、学校机房或者借用舍友的计算机。当年就用诺基亚3100手机看完了《Windows程序设计》、《Windows核心编程》和《Windows环境下32位汇编语言程序设计》。后来就网购实体书来看,这样比在网吧看电子书更实惠。大学期间,经常给《黑客防线》杂志投稿,一方面可以提高个人技术,一方面可以用稿费作为生活补贴,后来就用稿费加上我哥的经济支持,买下了第一台属于自己的计算机,本书就有一半内容是在那台计算机上完成的。在求学这条道路上,我一直是一个人默默地前行着,就连一块生活了几年的舍友也不知道我在学习安全方面的知识,我买的一堆计算机书籍一直藏在宿舍衣柜最里面。在此过程中,自己走过很多弯路,甚至多次差点放弃,但很庆幸最后还是坚持下来了,并直至今日,依然在安全这条道路上前行着……面试经历在圈内朋友的建议下,我在大五(医学五年制)上学期开始找安全相关的工作,最终顺利拿到安恒和腾讯的offer。当初投简历给安恒时,安恒的副总裁看完简历后直接发了offer,我有点受宠若惊,也特别感谢安恒的信任,但最终还是选择了腾讯。面试腾讯的经历,我觉得是个有趣的过程,值得与大家分享。那年我还在厦门市第二医院骨伤科实习,门诊部刚好不是特别忙,我在给一位腰椎患者做完针灸后,就接到来自腾讯安全中心的面试电话。然后趁主任不在,偷偷躲到门诊部后面的楼梯口进行电话面试,整个面试过程还算比较顺利,第2天腾讯安全中心就来电说希望我到深圳总部面试。到了深圳总部后,腾讯安全中心的主管面试了我,虽然聊了一个半小时,但没有问我多少问题,聊完后直接被带去HR那里面试。HR面试我时,并非以常规的话题开场,我们是以腰椎间盘突出的话题开场的,也算是一次别开生面的面试经历。回到厦门后,我跟带教老师说明了转行情况,之后有上手术台的机会,我都会主动让给其他同班同学,让他们有更多上台练手的机会,而我自己自然有更多的时间去专研安全技术。加入腾讯腾讯是我的第一家雇主,也是目前我唯一工作过的公司,从我毕业一直工作到现在。在公司我见证了腾讯安全应急响应中心(TSRC)的成立与发展,帮助完善各种流程和标准,作为早期主要的漏洞审核者,我也从广大白帽子身上学到很多东西,包括各种漏洞挖掘与利用技术,涉及各个安全领域,如Web安全、驱动安全、应用软件安全、移动安全等,正是TSRC给了我更多学习的机会,使得我在安全技术上能够更加全面地发展。除此之外,我在公司也做一些安全研究工作,并研发出Android与iOS应用安全审计系统,已投入公司日常运营使用。至今,我依然觉得工作能够与兴趣结合在一起,是一件既幸福又幸运的事,而选择腾讯依然是我当年的明智之举。著书感言本书是我写的第一本书,也可能是最后一本技术书籍,只有自己经历了著书过程,才知道写书的不易。特别是类似本书这种以漏洞实例进行调试分析的书,写起来特别费时,也更需要有持之以恒之的毅力。如果说单纯写书用掉1年时间,那么我用来调试的时间大约是3年,因此可以说这是"一本用调试器写出来的书"。"开头容易,收尾难"是个人著书的真实感受,很多人一时兴起写了开头,最后很难坚持下去,导致夭折了不少著作。本书结构本书共12章,可以分为三大部分。基础篇(第1章):主要介绍一些软件漏洞相关的基本概念,以及常用工具及漏洞分析方法,最后向读者推荐一些相关的学习站点和书籍,方便读者做进一步地学习和交流。实战篇(第2~11章):是本书最主要的部分,根据不同的漏洞类型挑选不同的经典案例,用不同的漏洞分析技巧,向读者介绍比较高效的分析方法,剖析各种常见的软件漏洞类型、原理、利用和修复的实战技术。同时,紧跟当前热门的移动互联网安全问题,增加了Android平台的漏洞分析,以保持内容与时俱进。展望篇(第12章):对未来的软件漏洞发展趋势做出预判,相信未来的主要战场会更集中在移动终端、云计算平台、物联网三大方向上,并对现有的这些方向的漏洞案例进行简要介绍。致谢感谢我父母的养育之恩,是他们在背后默默地支持我前行。感谢我的兄长在生活和工作上对我的帮助与支持。感谢我的女朋友,正是她的督促和支持才让我能够准时完稿,并且书中有些截图是经过她后期制作的,以便使得图片的印刷效果更好。感谢我的姑母长期以来对我生活上的关心与照顾。感谢我的公司腾讯,它所营造的良好氛围,使我的技术水平和在职场的发展都更上一层楼。同时也感谢在工作中一直给予我帮助和鼓励的同事和领导,由于人数较多,就不一一列举。感谢王清先生为本书作序,他所著书籍一直是软件安全行业的经典。感谢博文视点的编辑皎子、郑柳洁及她们的团队,正是他们的努力才使得本书最终能够与大家见面。感谢各位圈内的朋友,他们包括但不限于(排名不分先后):wushi、爱无言、仙果、wingdbg、instruder、kanxue、lake2、harite、h4ckmp、dragonltx、非虫、monster、gmxp、古河、冰雪风谷、KiDebug、KK……由于作者水平有限,书中难免有误,欢迎各位业界同仁斧正!序言独乐乐,与人乐乐,孰乐?不断向底层钻研的技术深度,创造性的广度思维,契而不舍地执着追求是成为优秀的安全研究员所必备的基础素质,无疑riusksk全都具备。单论技术本身,问世间,是否此山最高,没有人能说的清楚。但是我在书目中还看到了许多超出技术的其他元素:有精益求精、追求完美的极客精神;有循序渐进、耐心引导的导师身影;有架构明晰,逻辑严谨的整体设计感;最能打动我的,其实是那份炽热的分享精神,毫无保留地去帮助那些还在摸索中学习的朋友。一代宗师除了不断修炼自己之外,还需要将自己的智慧发扬传承,我在书中看到了这样的影子。《0day安全:软件漏洞分析技术》作者,北京子衿晨风科技有限公司CEO failwest媒体评论本书对近年来影响比较大的漏洞一一详细剖析,于细节处可以看出作者的功力,对于漏洞攻防领域是一本不可多得的原创好书。读者可以对照着动手调试这些经典漏洞,我相信只要认真做一遍,功力会大增。-- 腾讯科恩实验室总监 wushi过去的几年,我们见证了移动互联网的兴起,也见证了软件漏洞战场从PC端向移动端的迁移。本书从这个视角出发,结合实例、深入浅出、涵盖全面,是学习软件漏洞的绝佳之选。同时,本书作者riusksk(泉哥)在腾讯安全应急响应中心负责软件漏洞的处理和研究,有着丰富的实战经验。强烈推荐!-- 腾讯安全平台部总监 lake2安全漏洞的挖掘与分析是隐秘且难度较高的一门技术,系统性的学习资料更是少之又少。本书以近年来报告出的经典漏洞为蓝本,分析并讲解了常见的各种系统及软件漏洞的成因及攻击方法,通过对这些精彩漏洞实例的全面讲解,相信读者对软件漏洞技术会有更加全面的认识。随着全书内容的展开,读者一定会与我一样,被漏洞挖掘者的聪明与智慧折服。-- 软件安全专家,《Android软件安全与逆向分析》及《Mac OS X软件安全与逆向分析》作者 丰生强对软件漏洞进行分析研究是提高软件安全技术水平的途径之一,他山之石可以攻玉,这本书为我们提供了一个很好的开始,值得认真学习。移动平台的漏洞研究是当下的热点,本书与时俱进地纳入了这一部分内容,不可不读!-- 自由安全研究者,《挖0day》作者 爱无言这是自《0day安全:软件漏洞分析技术》以来,又一本关于二进制漏洞分析最全面的力作,本书结合新的经典漏洞与新型分析方法,深度剖析不同类型的安全漏洞,结合不同的分析方法,做到授人以渔。相信能够帮助那些希望从事安全行业的人员,为其提供更好的帮助。-- 阿里安全威胁情报中心安全专家 instruder随着互联网的蓬勃发展,安全漏洞也跟着逐年爆发。未知攻,焉知防!因此,如何快速分析漏洞成因是安全研究员必备的一项技能。本书涵盖了各种各样的漏洞类型,覆盖了PC端和移动端,极具实战性和全面性,兼具实用性和时效性,干货满满,是安全研究员提高漏洞分析能力的利器。俱往矣,数漏洞分析,还看此书!-- 阿里巴巴移动安全专家 dragonltx
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:软件漏洞分析入门:初级栈溢出一
下面的程序运行后提示用户输入密码
用户输入的密码与宏定义中的&1234567&比较
密码错误则提示用户重新输入
密码正确则提正确并退出
运行中输入的字符串被复制到verify_password函数的局部数组char buffer[8]中,若输入值大于缓冲区尺寸8字符时,缓冲区会被撑暴溢出,引起缓冲区溢出漏洞
当verify_password被调用时,系统会给它分配一片被称作函数栈帧的连续内存空间用于存储函数中定义的两个变量
char buffer[8];&
从程序中我们看出authenticated变量实际是个标志变量,其值决定程序进入错误重输流程(非0)还是密码正确流程(0)
当密码不正确,字符串比较返回1或-1
由于intel是大顶机,其内存中的数据按照4字节(DWORD)逆序存储,所以authenticated为1时,内存中存的是0x
如果输入包含8个字符的错误密码,如&qqqqqqqq&,那么字符串截断符0x00将写入authenticated变量,这溢出数组的一个字节0x00将恰好把逆序存放的authenticated变量改为0x,这样错误的密码得到了正确密码的运行效果
那为什么不行?因为字符串大小的比较是按字典序来的,而这个串小于&1234567&,authenticated的值是-1,在内存里将按补码存负数,所以实际存的不是0x而是0xffffffff。字符串截断后符0x00淹没后,变成0x00ffffff,还是非0,所以没有进入正确分支
思考:如果变量之间没有相邻怎么办?如果有一个编译器楞要把authenticated变量放在buffer[8]数组前边咋办?
#include &stdio.h&
#define PASSWORD &1234567&
int verify_password (char *password)
char buffer[8]; &// add local buff to be overflowed
authenticated=strcmp(password,PASSWORD);
strcpy(buffer,password); &//over flowed here
int valid_flag=0;
char password[1024];
printf(&please input password:&);
scanf(&%s&,password);
valid_flag = verify_password(password);
if(valid_flag)
printf(&incorrect password!\n\n&);
printf(&Congratulation! You have passed the verification!\n&);
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】

我要回帖

更多关于 软件漏洞分析 的文章

 

随机推荐