-
-
[分享]一个用于漏洞挖掘的ida脚本
-
发表于:
2013-9-14 14:10
14101
-
最近研究了下一下用于缓冲区溢出漏洞挖掘的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中,运行漏洞分析脚本进行测试,查看分析报告
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)