我们常说的漏洞挖掘,大致可以分为两种模式:白盒、黑盒.
1.白盒,又称透明盒测试,指我们清楚的了解程序的逻辑,获得设计思路,说明文档,源代码的情况下进行的测试.
优点:准确率高,定位到可能存在的漏洞位置处,能清楚的看到前后逻辑.
缺点:过于复杂,在代码量巨大的情况下,手工寻找要付出相当的精力,网传winNt4.0泄露过源码,但并未出现因该次泄露而导致的漏洞.
2.黑盒,又称功能测试,指在完全不了解内部信息的情况下进行碰撞测试
优点:可用性、重现性高,完全针对功能的测试,不同于白盒,在源码中实现漏洞函数细节但并未调用的情况,编译器会优化掉这个函数,也就是这个功能并不可用.
缺点:高误报,捕捉异常麻烦
二:fuzz的局限性
我们根据自己的经验编写相应的规则,白盒时,例如搜索gets、strcpy、fgets、memcpy等函数,然后向上回溯,如上所说,有可能函数并未调用过,亦或在上层调用之前已经做了限制,例如:
#include
void test(char *arr){
char buffer[10];
strcpy(buffer,arr);
}
int main(int argc,char **argv){
if(length(argv[1])<=10)
test(argv[1]);
}
在黑盒时,例如出现越权漏洞、作者自留后门、多阶漏洞,我们手工测试可以精准的判断,换成程序的视角,这就是一个正常的功能,造成误报
黑客技术专业渗透提权,数据拿站,爆破,Dns域名劫持,拖库,ddos,破解,等业务: https://t.me/Dashengguang