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

栏目: 编程语言 · 发布时间: 5年前

内容简介:在安全圈里我们会经常听到或用到一些0day漏洞,在印象里我们都觉的只有真正的大神才能挖掘到这样的漏洞,事实也的确如此。不过也不要被吓到,其实大部分的0day是缓冲区溢出漏洞演化而来,只要我们了解了缓冲区溢出原理,假以时日也可以自己挖掘出0day漏洞。由于是本系列的开篇,所以不给大家讲解过多的原理,今天先让大家直观感受一下什么是缓冲区溢出,让各位有一个初步的认识,闲话少叙,让我们开始。

*本文原创作者:kaliking,本文属于FreeBuf原创奖励计划,未经许可禁止转载

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

由于是本系列的开篇,所以不给大家讲解过多的原理,今天先让大家直观感受一下什么是缓冲区溢出,让各位有一个初步的认识,闲话少叙,让我们开始。

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

给大家一段 c语言 编写的代码,大家在DEV中编译执行一下:

#include <stdio.h>
#include <string.h> 

char name[] = "kalikingkalikingkaliking" ; 

int main()
{
char buffer[8];
strcpy(buffer, name);
printf("%s\n",buffer);
getchar();
return 0;
}

在win7中会出现以下报错,如图所示:

缓冲区溢出实战教程系列(一):第一个缓冲区溢出小程序 有一点c语言基础的人就不难看出问题所在,在程序中我们要把变量name的值拷贝给变量buffer,但我们分配给变量的空间只有8个字节,而name的长度远远大于8个字节。这就导致系统原本分配的空间不足而占用了本来用于存储程序返回地址的空间,导致程序无法正常运行。

今天先不讲原理,先讲讲分析缓冲区溢出必备的几款软件:

1. Dev-C ++  是一个 免费的 全功能 集成开发环境 (IDE),分布在 GNU通用公共许可证下, 用于 CC ++编程 。它是用 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-OLinux  ELF 可执行文件的 调试器

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

免费版下载地址: https://www.hex-rays.com/products/ida/support/download_freeware.shtml

接下来介绍一下三个软件的基本使用方法:

在这里只介绍在程序分析过程中常用的方法,其余的详细使用教程请自行Google

Dev c++的使用方法:

1.新建源代码文件

由于我们编写的源代码,只为了了解缓冲区溢出的原理,所以不必过于复杂,我们只需要新建个源代码文件就可以了,没必要创建项目文件。

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

把我们上边的示例代码拷贝进去,保存与其他编辑器无异,ctrl+s就ok,我习惯保存成c文件,这个大家随意。

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

2.编译运行:

编译运行就很简单了,点击 工具 栏最上方的运行,接着在下拉菜单中找到编译和运行,点击:

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

这时候会看到文件夹中多了一个exe文件这就是我们要用来调试的程序:

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

3.调试和查看汇编代码

这个是比较重要的一步,因为在编写shellcode的时候会用到,这里只讲用法,如何提取shellcode以后再讲。

首先设置断点,选择设置断点的行,可以再前面行标出单击也可以按F4,当行标处出现红点说明断点设置成功。

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

然后开启调试模式,我们点击下方选项卡里的调试,接着点击调试按钮。

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

接着点击查看CPU窗口: 缓冲区溢出实战教程系列(一):第一个缓冲区溢出小程序

我们就会看到汇编代码界面:

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

dev c++几个重要用法已经说完了,还要跟大家说一下如何解决安装使用过程中经常会出现zlib2.dll文件丢失的问题。

解决办法如下:

1.下载zlib1.dll:

http://www.pc6.com/softview/SoftView_81060.html

2.解压后放到系统目录中

32位系统:放到C:\Windows\System32\(此处为系统目录)

64位系统:放到C:\Windows\SysWOW64\

为了不使篇幅过长,其余两个软件使用方法我将在下一篇文章中进行讲解。

*本文原创作者:kaliking,本文属于FreeBuf原创奖励计划,未经许可禁止转载


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

破茧成蝶:用户体验设计师的成长之路

破茧成蝶:用户体验设计师的成长之路

刘津、李月 / 人民邮电出版社 / 2014-7 / 69.00

市面上已经有很多专业的用户体验书籍,但解决用户体验设计师在职场中遇到的众多现实问题的图书并不多见。本书从用户体验设计师的角度出发,系统地介绍了其职业生涯中的学习方法、思维方式、工作流程等,覆盖了用户体验设计基础知识、设计师的角色和职业困惑、工作流程、需求分析、设计规划和设计标准、项目跟进和成果检验、设计师职业修养以及需要具备的意识等,力图帮助设计师解决在项目中遇到的一些常见问题,找到自己的职业成长......一起来看看 《破茧成蝶:用户体验设计师的成长之路》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具