首页
社区
课程
招聘
SPIKE使用总结
2009-5-18 18:00 8248

SPIKE使用总结

2009-5-18 18:00
8248
各位好啊!
    我是wwwljc,最近需要使用SPIKE,所以在网上找了个来学习。关于SPIKE的使用说明很少,我还是通过看源码才有一点体会,这里就共享出来,错误之处请大侠们批评指正啊!

1:编译
           进入src目录运行:
        make clean
        automake && autoheader && autoconf && ./configure
        make
        . ./ld.sh

2:基本使用方法
    failwest的《0day安全:软件漏洞分析技术》一书中描述了SPIKE的基本使用方法,我这里就不再介绍了。

3:文件编译
    我认为,我们可以认为SPIKE提供了一组Fuzzing所需的函数库,而实际上我们需要调用这些库函数编写相应的程序实现Fuzzing。实际操作中,对于那些开源的协议,可以直接阅读相关文档进行分析,而对于一些介绍很少的协议,推荐使用wireshark等软件解码后再编写程序。
    针对我自己的编写的程序,编译命令如下:
gcc -o generic_send_tcp generic_send_tcp.c -I ../include/ dlrpc.o dlargs.o spike.o listener.o hdebug.o tcpstuff.o spike_dcerpc.o base64.o udpstuff.o spike_oncrpc.o -ldl -L. -ldlrpc
. ./ld.sh
    各位可以根据自己的需要导入相关的文件进行编译。

4:源码介绍
    在阅读SPIKE源码的时候,发现代码应该不算很难看懂,只不过有些地方很晕,主要原因是一些变量很难理解,这样就导致对程序的了解不深刻。这里我就简单介绍下struct spike结构中的部分变量,通过了解这些变量的含义,就可以轻松看源码了。

4.1 int didlastvariable;
测试是否为最后一个变量,也就是fuzzvariable是否为最大值

4.2 int didlastfuzzstring;                                       
是否为最后一个fuzzing string的下标

4.3 int didlastfuzzint;                                       
是否为最后一个fuzzing int的下标

4.4 int fuzzstring;
当前变量fuzz string/int的下标

4.5 int fuzzvariable;
第fuzzvariable个变量或第fuzzvariable次循环

4.6 int currentvariable;
如果fuzzvariable==currentvariable,则将这个变量进行fuzzing,其他变量保持不变

4.7 int firstvariable;
currentvariable==0,则firstvariable=1; currentvariable!=0,则firstvariable=0

5:常用函数
s_binary("00 00");
插入二进制数据
s_string("Referer\r\n");
插入一个字符串常量
s_int_variable(0x00,3);
插入一个int变量
s_string_variable("test\r\n");
插入一个字符串变量
s_string_variables('&',"username=bob&password=feet");
插入多个字符串变量

总结:以上是我这段时间研究SPIKE的成果,有错误之处,还请指正啊。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞7
打赏
分享
最新回复 (7)
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
老东西 2009-5-18 18:57
2
0
        
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
alissa 2009-5-26 16:25
3
0


和你理解的差不多

不过,didlast 这个前缀 我理解的是标志位:该**被使用过 。

还有一个问题想请教,s_int_variable()中的参数type的值是在哪里定义的?譬如ASCIIUNSIGNED是对应多少呢
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwljc 2009-5-26 18:54
4
0
s_int_variable()参数中的type在listener.h中定义的
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
alissa 2009-5-27 15:10
5
0
  谢谢

感觉SPIKE的那几个标志位还是很深的,用的时候要很注意细节才行 呵呵
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dannyszh 2009-6-16 11:37
6
0
能否在windows 下用  gcc编译 ,运行在windows平台上
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wwwljc 2009-6-22 08:13
7
0
还没测试过载windows下运行

不过感觉直接拿到windows下运行会出错,因为里面有好多linux下的库文件和windows下的不同

通过修改源码,应该还是可以实现的。
雪    币: 14
活跃值: (126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
呼啸沧桑 2018-8-10 14:54
8
0
要是有个automake和spike一起的完整教程就好了,现在编译用automake && autoheader && autoconf && ./configure,老是出错,错误还不是一样,一会儿这个错,一会儿那个错。目前automake的版本已经是2.68了,生成的configure.in文件已经有很多不同了。

若不用automake,我能否直接使用SPIKE呢?或者其他编译方式?
游客
登录 | 注册 方可回帖
返回