在安全圈,我们经常听到或使用一些0-day漏洞。在我们的印象中,我们都觉得只有真正的高手才能挖出这样的漏洞。漏洞,确实如此。但不要被吓倒。事实上,大多数0day都是由缓冲区溢出漏洞演变而来的。只要了解缓冲区溢出的原理,我们就可以及时自己挖掘0day漏洞。由于这是本系列的开始,我不会向您解释太多原理。今天就让大家直观的感受下什么是缓冲区溢出,让大家有个初步的认识,闲话少说,先说说吧。下面是一段c语言写的代码,请在DEV中编译执行:#include#includecharname[]="kalikingkalikingkaliking";intmain(){charbuffer[8];strcpy(buffer,name);printf("%s\n",buffer);getchar();return0;}在win7中会出现如下错误,如图:有一点c语言基础的人不难看出这个问题,在程序中我们想把变量名的值复制到变量buffer中,但是我们分配给变量的空间只有8个字节,而且长度ofname比8个字节大得多。这就导致系统原本分配的空间不足,占用了原本用来存放程序返回地址的空间,导致程序无法正常运行。今天先不说原理,说说缓冲区溢出分析必备的软件:1.Dev-C++是一个免费的全功能集成开发环境(IDE),在GNUGeneralPublicLicense下发行,授权有Programming在C和C++中。它是用德尔福写的。免费下载地址://sourceforge.net/projects/orwelldevcpp/files/latest/download2。OllyDbg(以其作者OlehYuschuk的名字命名)是一个强调二进制代码分析的x86调试器。免费下载地址:http://www.ollydbg.de/odbg201.zip3.IDA(InteractiveDisassembler)是计算机软件的反汇编程序,它将机器可执行代码生成汇编语言源代码。它支持针对不同处理器和操作系统的多种可执行文件格式。它还可以用作WindowsPE、MacOSXMach-O和LinuxELF可执行文件的调试器。免费版下载地址:https://www.hex-rays.com/products/ida/support/download_freeware.shtml接下来介绍三款软件的基本使用方法:这里只介绍过程中常用的方法程序分析,其余详细教程请谷歌。1、Devc++的使用方法:(1)新建一个源代码文件。由于我们写的源码只是为了了解缓冲区溢出的原理,所以不需要写得太复杂。我们只需要新建一个源代码代码文件就可以了,不需要新建工程文件。将我们上面的示例代码复制进去,和其他编辑器一样保存,ctrl+s就可以了,我习惯保存为c文件,你想怎么弄就怎么弄。(2)编译运行:编译运行非常简单。单击工具栏顶部的运行,然后在下拉菜单中找到编译运行。点击:这时候你会看到文件夹里多了一个exe文件。这就是我们要的用于调试的程序:(3)调试查看汇编代码是很重要的一步,因为写shellcode的时候会用到。这里只讲用法,后面会讲到如何提取shellcode。首先设置断点,选择设置断点的行,可以标记上一行点击或者按F4,当行标记处出现红点时,表示断点设置成功。然后开启调试模式,我们在下方的选项卡中点击调试,然后点击调试按钮。然后点击查看CPU窗口:我们会看到汇编代码界面:devc++的几个重要用法已经讲完了,下面告诉大家如何解决zlib2.dll文件在安装和使用过程中经常丢失的问题。解决方法如下:a.下载zlib1.dll:http://www.pc6.com/softview/SoftView_81060.htmlb.解压后放入系统目录32位系统:放入C:\Windows\System32\(此处为系统目录)64位系统:放入C:\Windows\SysWOW64\为了不使篇幅太长,我将在下一篇文章中介绍如何使用其他两个软件。