首先得会内存、寄存器还有程序运行的规则。
存储知识:
文件地址(File Offset):数据在PE文件中的地址,文件在磁盘上存放时相对于文件开头的偏移;
虚拟内存地址:每个进程都有的4G虚拟空间;
物理内存地址;
这三个地址要层层映射
内存:
代码区:存放二进制代码
数据区:存储全局变量
堆区:动态内存空间(还没太明...
分类:
其他好文 时间:
2015-05-08 00:04:00
阅读次数:
184
4.3.2 Linux32环境下函数的返回地址
编译、链接、执行程序buffer_overflow.c,并关闭Linux的栈保护机制,参见截图:
下面用gdb调试程序:
在foo函数的入口、调用strcpy函数处和foo返回处设置断点:
继续运行,找到函数的返回地址:
buff的起始地址B到保存函数的返回地址A之间的偏移:
A-B=0xbffff29c-...
分类:
系统相关 时间:
2015-05-07 18:59:56
阅读次数:
367
Redis的字符串采用的是自定义的struct,名字叫做简单动态字符串(simple dynamic string,SDS)。
结构如下:struct sdshdr{
int len;
int free;
char buf[];
};采用如此结构的好处是:
【1】获取length的时候复杂度为O(1),不需要O(n);
【2】动态分配空间,避免缓冲区溢出,避免每次修改或者append都重新分配;
【...
分类:
其他好文 时间:
2015-05-07 18:51:47
阅读次数:
99
使Java使用起来如此舒适的一个因素在于,它是一门安全的语言。这意味着,它对于缓冲区溢出,数组越界,非法指针以及其他的内存破坏 都自动免疫,而这些错误却困扰着诸如C和C++这样的不安全语言。在一门安全的语言中,在设计类的时候,可以确切的知道,无论系统的 其他部分发生什么事情,这些类的约束都可以保持为...
分类:
其他好文 时间:
2015-05-07 16:09:19
阅读次数:
110
前言
我在之前的课程中讨论过W32Dasm这款软件中的漏洞分析与利用的方法,由于使用该软件的人群毕竟是小众群体,因此该漏洞的危害相对来说还是比较小的。但是如果漏洞出现在Windows系统中,那么情况就会很不一样了。毕竟Windows统治了全球九成以上的计算机操作系统,因此如果该系统中出现了漏洞,而这个漏洞又被别有用心者所利用,那么就必然会出现数以亿计的受害者。
MS06-...
分类:
其他好文 时间:
2015-05-02 09:50:14
阅读次数:
154
漏洞报告分析
学习过破解的朋友一定听说过W32Dasm这款逆向分析工具。它是一个静态反汇编工具,在IDA Pro流行之前,是破解界人士必然要学会使用的工具之一,它也被比作破解界的“屠龙刀”。
但是即便是这么一款破解界的“神器”,竟然也是存在着缓冲区溢出的漏洞的。可见,它在破解无数程序的同时,其自身也存在着被“黑”的风险。那么我们可以首先分析一下漏洞报告:
##...
分类:
其他好文 时间:
2015-05-02 09:48:17
阅读次数:
346
前言
经过上次的分析,我们已经知道了MS06-040漏洞的本质,那么这次我们就通过编程实现漏洞的利用。
编写漏洞利用程序的框架
这里我使用的是VC++6.0进行编写,需要将包含有漏洞的netapi32.dll文件与工程文件放置在同一个目录下。程序如下:
#include
typedef void (*MYPROC)(LPTSTR, ...);
in...
分类:
其他好文 时间:
2015-05-02 09:39:26
阅读次数:
223
前言
经过前两次的分析,我们已经对Netapi32.dll文件中所包含的漏洞成功地实现了利用。在系统未打补丁之前,这确实是一个非常严重的漏洞,那么打了补丁之后,这个动态链接库是不是就安全了呢?答案是否定的。即便是打了补丁,虽说我们之前所分析的漏洞已被补上,但是这个程序中依旧存在着其它的问题。
对漏洞函数进行静态分析
我们之前所研究的Netapi32.dl...
分类:
其他好文 时间:
2015-05-02 09:38:04
阅读次数:
246
前言
上次我们已经讨论了缓冲区溢出的原理,而这次我们需要利用这个原理来构造条件,从而利用这个漏洞。
其实缓冲区溢出漏洞的利用主要是需要解决以下三个问题:
1、精确定位返回地址的位置
2、寻找一个合适的地址,用于覆盖原始返回地址
3、编写Shellcode到相应的缓冲区中
这次我们就结合实验程...
分类:
其他好文 时间:
2015-05-01 17:31:17
阅读次数:
268
前言
ShellCode究竟是什么呢,其实它就是一些编译好的机器码,将这些机器码作为数据输入,然后通过我们之前所讲的方式来执行ShellCode,这就是缓冲区溢出利用的基本原理。那么下面我们就来编写ShellCode。为了简单起见,这里我只想让程序显示一个对话框:
图1
获取相关函数的地址
那么我们下面的工作就是让存在着缓冲区溢出漏洞的程序显...
分类:
系统相关 时间:
2015-05-01 17:30:11
阅读次数:
347