我们经常在安全圈听到或使用一些0day漏洞,在印象里我们都觉的只有真正的大神才能挖掘到这样的漏洞,事实也的确如此。不过也不要被吓到,其实大部分的0day它是由缓冲区溢出漏洞演变而来的。只要我们了解缓冲区溢出的原理,我们就可以及时挖掘自己0day漏洞。
因为这是这个系列的开头,所以我不会向你解释太多的原则。今天,让你直观地感受到什么是缓冲区溢出,让你有一个初步的理解,少说闲话,让我们开始。
给大家一段c语言编写代码,每个人都在DEV实施中编译:
在win7中会出现以下报错,如图所示:
有一点c语言基础的人不难看出问题所在程序中,我们应该使用变量name将值复制到变量buffer,但只有8个字节分配给变量,name长度远远大于8个字节。这导致系统原本分配的空间不足,占用了存储程序返回地址的空间,导致程序无法正常运行。
今天先不讲原理,先讲几个必要的软件分析缓冲区溢出:
1. Dev-C 是一个免费的全功能集成开发环境(IDE),分布在GNU在通用公共许可证下,用于 C和C 编程。它是用的Delphi编写的。
免费下载地址:////sourceforge.net/projects/orwelldevcpp/files/latest/download
2. OllyDbg(以其作者Oleh Yuschuk命名)强调二进制代码分析x86调试器。
免费下载地址:http://www.ollydbg.de/odbg201.zip
3. IDA (Interactive Disassembler)它是一个计算机软件,它从机器中生成汇编语言源代码。它支持不同处理器和操作系统的多种可执行文件格式。它也可以用作Windows PE,Mac OS X Mach-O和Linux ELF可执行文件的调试器。
免费下载地址:https://www.hex-rays.com/products/ida/support/download_freeware.shtml
接下来介绍三个软件的基本使用 *** :
这里只介绍程序分析过程中常用的 *** 。请自己使用其他详细的教程Google
1. Dev c 使用 *** :
(1) 新源代码文件
因为我们编写的源代码只是为了了解缓冲区溢出的原理,所以不需要太复杂。我们只需要建立一个新的源代码文件,而不需要创建项目文件。
复制我们上面的示例代码,保存与其他编辑器无异,ctrl s就ok,我习惯于保存c文件,这个大家。
(2) 编译操作:
编译操作非常简单,点击工具栏顶部的操作,然后在下拉菜单中找到编译和操作,点击:
这时,你会看到文件夹里有一个额外的exe文件是我们需要调试的程序:
(3) 调试和查看汇编代码
这是一个重要的步骤,因为它正在编写shellcode这里只讲用法,怎么提取?shellcode以后再讲。
首先设置断点,选择设置断点的行,然后在前面标记单击或按下F4,当行标处断点设置成功。
然后打开调试模式,点击下面选项卡中的调试,然后点击调试按钮。
然后点击查看CPU窗口:
我们将看到汇编代码界面:
dev c 已经完成了几个重要的用法,我想告诉你如何解决安装和使用的问题zlib2.dll文件丢失的问题。
解决方案如下:
a. 下载zlib1.dll:
http://www.pc6.com/softview/SoftView_81060.html
b. 解压后放入系统目录
- 32位系统:放置C:\Windows\System32\(此处为系统目录)
- 64位系统:放置C:\Windows\SysWOW64\
为了不让空间太长,我将在下一篇文章中解释其他两种软件的使用 *** 。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。