首页
社区
课程
招聘
[分享]一个用于漏洞挖掘的ida脚本
发表于: 2013-9-14 14:10 14100

[分享]一个用于漏洞挖掘的ida脚本

2013-9-14 14:10
14100

最近研究了下一下用于缓冲区溢出漏洞挖掘的ida脚本,大伙可以阅读这个文件,难度不大,里面的//xy 是我看完后加的注释
由于原脚本有一些疏漏和错误,因此我做了部分更正,更多的功能您自己再去挖掘吧!

bugscam是某老外写的一款用于分析缓冲区溢出漏洞的脚本,可以分析常见的那些不安全的字符串函数,将可能潜在有缓冲区溢出漏洞的所有"call 指令"地方一一列举出来,
然后以html文档的形式显示分析报告
比如常见的strcpy(void* dstbuf,void* srcbuf),如果某条调用这个不安全函数的call指令传入的源缓冲长度超出了目标缓冲区的长度,就会造成缓冲区溢出,引发可怕的漏洞
这个脚本可以检查strcpy\strcat\sprintf\MultiByteToWideChar这几个函数的使用,列出程序中对这几个函数的所有不安全调用处!

使用方法:
将文件解压放到任意地方,然后修改globalvar.idc文件中头行的bugscam_dir为你的bugscam目录的全路径。
启动ida,加载任意一个x86程序文件,然后打开脚本文件run_analysis.idc,运行即可,等待分析完毕,最后的分析报告结果保存在reports目录中的html文件中,随带的压缩包
自带了一个示例的分析结果报告文件

下面是测试代码:
        char buf1[4];
        char buf2[8];
        char buf3[4];
       
        //测试全局缓冲拷贝到栈缓冲
        lstrcpyA(buf1,"a");//不溢出
        lstrcpyA(buf1,"aaaaa");//溢出
               
        lstrcatA(buf2,"a");//不溢出
        lstrcatA(buf2,"aaaaaaaaaa");//溢出
               
        wsprintfA(buf3,"a%sa","a");//不溢出
        wsprintfA(buf3,"a%sa","aaaaaaaaaa");//溢出
       
       
        //测试栈缓冲拷贝到栈缓冲
        lstrcpyA(buf2,buf1);//不溢出
        lstrcpyA(buf1,buf2);//溢出       
               
        printf(buf1);
        printf(buf2);
        printf(buf3);
可以把这段代码放到你的程序中,编译后,拖进ida中,运行漏洞分析脚本进行测试,查看分析报告


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 8
支持
分享
最新回复 (15)
雪    币: 6525
活跃值: (3418)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
先收藏了,感谢分享脚本
2013-9-14 14:33
0
雪    币: 66
活跃值: (960)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看,mark.
2013-9-14 14:42
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mark.
2013-9-14 15:41
0
雪    币: 357
活跃值: (3438)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
5
很久很久以前的脚本,10年前
2013-9-14 15:43
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
感谢分享 : )
2013-9-14 17:01
0
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
mark
2013-9-14 19:56
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
mark  zan
2013-9-14 20:31
0
雪    币: 813
活跃值: (175)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
原始版本检测目标缓冲区的长度判定欠妥,只有能溢过返回地址的溢出类型才好利用,
因此V1.1版除去了那些虽然溢出,但没溢出到返回地址处的那些情况
上传的附件:
2013-9-28 14:19
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
10
感谢分享,下载学习,大把挖洞嘻嘻。
2017-12-13 17:51
0
雪    币: 4
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢分享,下载学习,大把挖洞嘻嘻。
2018-5-7 17:23
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2018-5-7 18:44
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
本来想自己开发个,网上一搜还真有现成的,感谢分享
2018-5-8 08:37
0
雪    币: 252
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
感谢分享
2022-4-8 16:53
0
雪    币: 4120
活跃值: (5822)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
15
有遇到同样错误的嘛variable 'add_entry' has already been defined
2022-4-8 19:17
0
雪    币: 168
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
badboyl 有遇到同样错误的嘛variable 'add_entry' has already been defined
这问题怎么解决呢?
2024-5-13 16:47
0
游客
登录 | 注册 方可回帖
返回
//