首页 未命名正文

缓冲区溢出实战教程系列(一):头筹缓冲区溢出小程序

我们经常在安全圈听到或使用一些0day漏洞,在印象里我们都觉的只有真正的大神才能挖掘到这样的漏洞,事实也的确如此。不过也不要被吓到,其实大部分的0day它是由缓冲区溢出漏洞演变而来的。只要我们了解缓冲区溢出的原理,我们就可以及时挖掘自己0day漏洞。

因为这是这个系列的开头,所以我不会向你解释太多的原则。今天,让你直观地感受到什么是缓冲区溢出,让你有一个初步的理解,少说闲话,让我们开始。

给大家一段c语言编写代码,每个人都在DEV实施中编译:

  • #include<stdio.h>
  • #include<string.h>    
  • charname[]="kalikingkalikingkaliking";
  • intmain()
  • {
  • charbuffer[8];
  • strcpy(buffer,name);
  • printf("%s\n",buffer);
  • getchar();
  • return0;
  • }
  • 在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\

    为了不让空间太长,我将在下一篇文章中解释其他两种软件的使用 *** 。

       
    版权声明

    本文仅代表作者观点,不代表本站立场。
    本文系作者授权发表,未经许可,不得转载。