
一个简单的、易于扩展的、易于使用的fuzzer程序。目标是(尝试)提供一个能提高不同fuzz程序间功能和代码重用程度、简化新fuzz程序开发步骤,提高开发效率的一个环境。新的fuzz功能模块通过插件的方式加入,目前提供了三个简单的fuzz插件。随着fuzz类型的不断增加,架构可能还需要不断的调整,现在仅仅是一个开始。
下载地址:
gfuzz 0.2.1
http://docs.google.com/Doc?id=dc6dmmd2_1dx9x3thh
<by Grip2>
对比Linux内核2.4.x和2.6.x版本,我们可以发现SAVE_ALL宏中一个有趣的变化,代码如下:
kernel 2.4.x:
87#define SAVE_ALL \
88 cld; \
89 pushl %es;
\
90 pushl %ds;
\
91 pushl %eax;
\
92 pushl %ebp;
\
93 pushl %edi;
\
94 pushl %esi;
\
95 pushl %edx;
\
96 pushl %ecx;
\
97 pushl %ebx;
\
98 movl
$(__KERNEL_DS),%edx; \
99 movl %edx,%ds;
\
100 movl
%edx,%es;
kernel 2.6.x:
84#define SAVE_ALL \
85 cld; \
86 pushl %es;
\
87 pushl %ds;
\
88 pushl %eax;
\
89 pushl %ebp;
\
90 pushl %edi;
\
91 pushl %esi;
\
92 pushl %edx;
\
93 pushl %ecx;
\
94 pushl %ebx;
\
95 movl
$(__USER_DS), %edx; \
96 movl %edx, %ds;
\
97 movl %edx,
%es;
可以看到__KERNEL_DS被__USER_DS替换。
WHY ?!
在看答案之前,尝试自己解释一下……
一个简单的小工具。这个工具可以在溢出发生时crash进程,这样就可以准确的确定堆溢出点。使用这个功能需要编译时指定编译模式:
MODE=-DGHC_CRASH_MODE
下面是代码:
--------------------------------------------------------
#!/bin/bash
##
# Heap overflow Checker
# Version: 0.2.0
# Written by grip2 <gript2@hotmail.com>
##
mkdir heapof_check
cd heapof_check
## README
cat << __EOF__ > README
grip2@debian:~/heapof_check$ ls
Makefile README ghc.c test.c
#!/bin/bash
#
####################################################
#
# Linux binfmt_elf core dump buffer overflow (PoC)
# (Kernel-2.4.22)
#
# 2006-04-30
# Written by :
# grip2
<gript2@hotmail.com>
# airsupply
<airsupply@0x557.org>
#
####################################################
## overflow.c
cat << __EOF__ > overflow.c
/*
* Written by :
* grip2
<gript2@hotmail.com>
* airsupply
<airsupply@0x557.org>
*/
Linux内核溢出研究系列(2) - kmalloc溢出技术
作者:grip2 <gript2@hotmail.com>
日期:2006-04-12
内容:
1 -- 介绍
2 -- kmalloc/slab简介
3 -- kmalloc/slab的关键特性
4 -- kmalloc exploit
5 -- 更进一步
6 -- 最后
7 -- 参考资料
8 -- 附录 (kexp-msfilter.c)
一、** 介绍
关注isec很长时间了,一直对他们在Linux内核方面的技术研究成果很佩服,同时自己也一直
在跟踪和分析这方面的技术,但是由于时间及精力所限一直没能更深入一步进行系统的研究和总
结。这一段恰好有些时间,和airsupply一起在内核溢出方面进行了一些研究,也写出了几个
isec公布的漏洞的利用代码。为了能对我们的阶段性的工作有所归纳和总结,我们开始着手去写
《linux内核溢出研究》系列的paper。写这个文档的一个目的也是为了与国内对这方面有兴趣的
朋友共享我们的经验,促进我们在内核安全方面的研究和交流。
阅读这面文档需要你具有一些Linux内核方面的知识,同时要能读懂一点C和汇编代码。文章里
提到的技术和代码是基于x86架构的Linux
kernel-2.4.22的,在其它的系统环境中也许有所不同。
标题: linux内核溢出研究系列(1)--通用shellcode篇
创建: 2006-3-22
修改:2006-3-22
作者:李小军(a1rsupp1y)
---------------------------------------------------------------------------------------------------
目录:
一、简介
二、简单的例子
1)例子代码
2)利用代码
三、shellcode扩展
1)模式
2)通用思路
3)通用实现
四、参考资源
五、附录
六、感谢
--------------------------------------------------------------------------------------------------
一、简介
linux内核溢出凸显严重,利用代码的编写和普通溢出相比,难度大了很多。
几乎每一个经典的内核漏洞都有一个非常经典的利用代码值得大家深入学习。
目前可以借鉴的学习文档基本上都是英文的,于是决定对linux内核溢出利用代
码的编写进行全盘的学习。这份文档就是一个学习的过程,记录下来,希望能
和大家共同进步。
/*
* Linux kernel setsockopt MCAST_MSFILTER privilege
elevation
* For kernel 2.4.22 - 2.4.25
*
* 2006-04-07
* Written by grip2 <gript2@hotmail.com>
* Thanks airsupply
*
* grip2@debian:~/kernel-sec/exp-msfilter$
./kexp-msfilter
* numsrc: 0x4000000c msize: 0x40 gsize: 0x68c optlen:
0x68c
* Prepare ...
* full_numsrc:
15 overflow_numsrc:
3
*
size-64
87 118
64 2 2
1
*
size-64
119 177
64 3 3
1
* Exploiting ...
* setsockopt: Cannot assign requested address
* sh-2.05b#
**/
What is linux-gate.so.1?
When you use the ldd utility on a reasonably recent Linux system
you'll frequently see a reference to an ethereal entity known as
linux-gate.so.1:
ldd /bin/sh
linux-gate.so.1
=> (0xffffe000)
libdl.so.2 =>
/lib/libdl.so.2 (0xb7fb2000)
libc.so.6 =>
/lib/libc.so.6 (0xb7e7c000)
/lib/ld-linux.so.2
(0xb7fba000)
What's so strange about that? It's just a dynamically loaded
library, right?
Sort of, for sufficiently generous definitions of dynamically
loaded library. The lack of file name in the output indicates that
ldd was unable to locate a file by that name. Indeed, any attempt
to find the corresponding file – whether manually or by software
designed to automatically load and analyze such libraries – will
be unsuccessful.
Powered by Haiwit