_
Hauptmenu
News
Verwundbarkeitsdatenbank
Downloads
- Dokumente
- Software
- Filme
- Guides
Projekte
- Attack Tool Kit
- codEX
- ComInt
- Compupedia
- Computec Online Adventure
- eLearn
- Entropia
- httprecon
- Tractatus
Forum
Statistiken
- Webseite
Links
FAQ
Impressum

Willkommen 38.107.191.102

Online
Gäste: 20
Mitglieder: 0
Auf dieser Seite: 1
Mitglieder: 3047, neuestes ist Billy Kalender

scip_Alerter
15.04.kritischApple Mac OS X Apple Type Services Indexing
14.04.kritischAdobe Reader/Acrobat verschiedene unspezifizierte Schwachstellen
13.04.problematischMicrosoft Windows Kernel Denial of Service Schwachstellen
13.04.problematischMicrosoft Windows Kernel Privilege Escalation und Denial of Service
13.04.kritischMicrosoft Windows SMB Client verschiedene Schwachstellen

Zeige aktuelle Schwachstellen

Neueste 5 Downloads
915 Sophos A bis Z der Computersicherheit
Sophos, Allgemein (Dokumente), 20. Jul 08 : 12:10
Dieses Büchlein wird von Sophos zu Werbezwecken verdient. Es stellt in einem ersten Teil die Bedrohungen von A bis Z, wie man sie im Internet antrifft, vor. In gleicherweise werden im zweiten Teil Schutzmassnahmen erwähnt. Kurz und bündig wird so der Leser an die Materie herangeführt. Technische Details und weiterführende Diskussionen fehlen, so dass es wirklich nur als seichte Unterhaltung und Einführung gedacht ist.
914 eBay Hack (S.M.)
S.M. (aka. SevenUp), Social Hacking (Dokumente), 20. Jul 08 : 12:03
Dieses nicht unumstrittene Dokument bespricht Schritt für Schritt, wie ein technisch gestütztes Phishing per HTML-Email und PHP-Skript durchgeführt werden kann, um Login-Informationen für eBay abzufangen. Der Beitrag weist einige technische Fehler auf und ist zu grossen Teilen veraltet. Aus diesem Grund wird ihm primär nur noch historisches Interesse entgegengebracht.
913 Angriff und Verteidigung in Computernetzen
Alexander Koch, Allgemein (Dokumente), 20. Jul 08 : 11:57
Die leider etwas karge Präsentation beleuchtet verschiedene Gesetzesartikel, die auf Computerangriffe und Strike-Back-Verfahren angewendet werden können. Dabei werden sowohl die deutsche als auch die schweizerische Rechtssprechung berücksichtigt. Ein interessanter Beitrag, der die Gefahren von automatisierten Schutzmechanismen auf einer nicht-technischen Ebene zu verdeutlichen in der Lage ist.
912 Cross-Site Scripting (Compass)
Ivan Bütler, Webserver (Dokumente), 20. Jul 08 : 11:49
In diesem einfachen Artikel werden die Grundlagen von Cross Site Scripting-Attacken aufgezeigt. Dabei werden sowohl serverseitige als auch clientseitige Varianten besprochen und zudem darauf hingewiesen, dass sich dies mit jeglicher Art von Scripting (JavaScript, VBscript, etc.) durchsetzen lässt. Die Einfachheit des Papiers macht es vor allem für Einsteiger leicht zu lesen.
911 Internet Networking - Measuring Distance and Bandwidth between Hosts
Werner König, Netzwerke (Dokumente), 01. Apr 08 : 21:43
In dieser Seminararbeit werden diverse Algorithmen zur Berechnung von Bandbreiten bestimmter Verbindungen zwischen Hosts besprochen. Es werden Troughput, Pathchar und vor allem Packet Pair beschrieben sowie ihre Vor- und Nachteile dargestellt. Ein interessantes Gebiet, welches ausserhalb akademischer Bereiche fast keine Beachtung findet.

Zeige alle Downloads (902 Total)

Schon gewusst, dass...
...DOS für Disc Operating System steht? Die Schreibweise DoS des Akronyms steht hingegen für Denial of Service.

Zeige alle Trivias (244 Total)

Zitat des Augenblicks (id 246)
"Wenn man über nichts gescheites zu diskutieren weiss, streitet man halt über Betriebssysteme und Programmiersprachen." - Marc Ruef, 08. April 2007
Zeige alle Zitate (246 Total)

Buchtipp
Die Kunst des Penetration Testing - Handbuch für professionelle Hacker von Marc Ruef: Das Buch von Marc Ruef bespricht auf rund 1

Die Kunst des Penetration Testing - Handbuch für professionelle Hacker
von Marc Ruef

Google Werbung

 
Foren
Foren / Programmieren / Dateiupload mit C und WinHttp

Gehe zu:     Nach oben



Moderatoren: Marc Ruef, ports, Stefan, Anja
Dieser Thread wird beobachtet von einem Benutzer: Checker
Sie müssen registriert und eingeloggt sein, um posten zu können
Checker * Sa, 03. Jul 2010, 12:50 (9154 Bytes)
VampiricRoyalty.gif
Einträge 124
seit Fr, 06. Jun 2008, 15:25
Hallo Leute,
schon seit längerem versuche ich, größere Textdateien mithilfe von WinHttp an ein php skript zu übergeben und hochzuladen.
Allerdings gibt es immer irgendetwas das nicht funktioniert, wobei Dateien oder Strings, die kleiner als 250 Byte sind, problemlos mit Winsock hochgeladen werden.
Ich habe daher versucht, mit Winsock eine größere Datei hochzuladen, was allerdings nicht funktionierte.
Später, bin ich dann auf WinHttp gestoßen und versuche seitdem, mit diesem eine große Datei erfolgreich hochzuladen, wobei ich aber immer an der korrekten Gestaltung des Request headers scheitere.
Zwar habe ich mit Wireshark mitgesnifft, wie ein solches Request aussehen muss, aber bei der Umsetzung hapert es doch gewaltig.
Deshalb meine Frage: Hat hier jemand schon einmal ähnliches versucht oder eine Lösung dafür gefunden?

Hier der PHP Code:

    Bildschirmausgabe:
    <?php
    if(!is_dir("uploads")) mkdir("uploads");

    if(!isset($post)) {
    echo "<form action=upload.php method=post enctype=multipart/form-data>
    <input type=file name=upfile><br>
    <input type=submit name=post value=hochladen>";
    }

    else {
    if($upfile !== "") { copy($upfile,"uploads/".$upfile_name); echo "Datei hochgeladen ! <br> <a href='uploads/$upfile_name'>$upfile_name</a>";}
    else { echo "Keine Datei ausgewählt<br><a href=javascript:history.back()>zurück</a>";}
    }
    ?>


und hier mein C Code:

    Bildschirmausgabe:
    #include <stdio.h>
    #include <windows.h>
    #include "winhttp.h"
    #include <string.h>

    int main()
    {

    HINTERNET hopen, hconnect, hhttp;
    BOOL r, retsend, bResults;
    DWORD read;
    char header[1024], head[512], head1[512];

    char *to_send="hallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo weltv"
    "hallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welt"
    "hallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welt"
    "hallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo welthallo";

    char *speichername = "test32.txt";

    memset(head, 0, 10);
    memset(header, 0, 10);

    sprintf(head, "%s-----------------------------90721038027008rn", head);
    sprintf(head, "%sContent-Disposition: form-data; name="upfile"; filename="%s"rn", head, speichername);
    sprintf(head, "%sContent-Type: text/plainrn", head);

    char *zeiger = head;
    printf("%s", zeiger);
    //sprintf(header, "%s-----------------------------90721038027008rn", header); //ein '-' weniger
    //sprintf(header, "%sContent-Disposition: form-data; name="upfile"; filename="%s"rn", header, speichername);
    //sprintf(header, "%sContent-Type: text/plainrn", header);
    sprintf(header, "%srn", header);
    sprintf(header, "%s%srn", header, to_send);
    sprintf(header, "%s-----------------------------90721038027008rn", header);
    sprintf(header, "%sContent-Disposition: form-data; name="post"rn", header);
    sprintf(header, "%srn", header);
    sprintf(header, "%shochladenrnrn", header);
    sprintf(header, "%s-----------------------------90721038027008--\r\n\r&
    #92;n", header);

    hopen = WinHttpOpen(NULL, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
    if(hopen == NULL)
    printf("Fehler InternetOpen()");

    hconnect = WinHttpConnect(hopen, L"www.beispiel.de",
    INTERNET_DEFAULT_HTTP_PORT,0);
    if(hconnect == NULL)
    printf("Fehler InternetConnect()");

    hhttp = WinHttpOpenRequest(hconnect, L"POST", L"/upload.php", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES,0);
    if(hhttp == NULL)
    printf("Fehler HttpOpenRequest()");

    bResults = WinHttpAddRequestHeaders( hhttp,
    L"Content-Type: multipart/form-data; boundary=---------------------------90721038027008",
    (ULONG)-1L,
    WINHTTP_ADDREQ_FLAG_ADD );
    if(!bResults)
    printf("Fehler WinHttpAddRequestHeaders()n");

    read=GetLastError();

    switch(read)
    {
    case ERROR_WINHTTP_INCORRECT_HANDLE_STATE:
    printf("ERROR_WINHTTP_INCORRECT_HANDLE_STATE");
    break;
    case ERROR_WINHTTP_INCORRECT_HANDLE_TYPE:
    printf("ERROR_WINHTTP_INCORRECT_HANDLE_TYPE");
    break;
    case ERROR_WINHTTP_INTERNAL_ERROR:
    printf("ERROR_WINHTTP_INTERNAL_ERROR");
    break;
    case ERROR_NOT_ENOUGH_MEMORY:
    printf("ERROR_NOT_ENOUGH_MEMORY");
    break;
    case ERROR_INVALID_PARAMETER:
    printf("ERROR_INVALID_PARAMETER");
    break;
    default:
    printf("NO ERROR DETECTEDn");
    break;
    }

    bResults = WinHttpSendRequest( hhttp,
    (LPVOID)(LPCSTR)zeiger,
    (DWORD)strlen(head),
    (LPVOID)(LPCSTR)header,
    strlen(header),
    strlen(header),
    0 );
    if(!bResults)
    printf("Fehler WinHttpSendRequest()n");

    DWORD err;
    err = GetLastError();

    switch(err)
    {
    case ERROR_WINHTTP_CANNOT_CONNECT:
    printf("ERROR_WINHTTP_CANNOT_CONNECT");
    break;

    case ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED:
    printf("ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED");
    break;

    case ERROR_WINHTTP_CONNECTION_ERROR:
    printf("ERROR_WINHTTP_CONNECTION_ERROR");
    break;

    case ERROR_WINHTTP_INCORRECT_HANDLE_STATE:
    printf("ERROR_WINHTTP_INCORRECT_HANDLE_STATE");
    break;

    case ERROR_WINHTTP_INCORRECT_HANDLE_TYPE:
    printf("ERROR_WINHTTP_INCORRECT_HANDLE_TYPE");
    break;

    case ERROR_WINHTTP_INTERNAL_ERROR:
    printf("ERROR_WINHTTP_INTERNAL_ERROR");
    break;

    case ERROR_WINHTTP_INVALID_URL:
    printf("ERROR_WINHTTP_INVALID_URL");
    break;

    case ERROR_WINHTTP_LOGIN_FAILURE:
    printf("ERROR_WINHTTP_LOGIN_FAILURE");
    break;

    case ERROR_WINHTTP_NAME_NOT_RESOLVED:
    printf("ERROR_WINHTTP_NAME_NOT_RESOLVED");
    break;

    case ERROR_WINHTTP_OPERATION_CANCELLED:
    printf("ERROR_WINHTTP_OPERATION_CANCELLED");
    break;

    case ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW:
    printf("ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW");
    break;
    case ERROR_WINHTTP_SECURE_FAILURE:
    printf("ERROR_WINHTTP_SECURE_FAILURE");
    break;

    case ERROR_WINHTTP_SHUTDOWN:
    printf("ERROR_WINHTTP_SHUTDOWN");
    break;

    case ERROR_WINHTTP_TIMEOUT:
    printf("ERROR_WINHTTP_TIMEOUT");
    break;

    case ERROR_WINHTTP_UNRECOGNIZED_SCHEME:
    printf("ERROR_WINHTTP_UNRECOGNIZED_SCHEME");
    break;


    case ERROR_NOT_ENOUGH_MEMORY:
    printf("ERROR_NOT_ENOUGH_MEMORY");
    break;


    case ERROR_INVALID_PARAMETER:
    printf("ERROR_INVALID_PARAMETER");
    break;


    case ERROR_WINHTTP_RESEND_REQUEST:
    printf("ERROR_WINHTTP_RESEND_REQUEST");
    break;

    }


    WinHttpCloseHandle(hopen);
    WinHttpCloseHandle(hconnect);
    WinHttpCloseHandle(hhttp);

    return EXIT_SUCCESS;
    }


Mfg
Faustpatrone

Ich bin nur dafür verantwortlich, was ich sage, aber nicht dafür, was andere verstehen.
------
Das Gute - Dieser Satz steht fest - ist stets das Böse, was man lässt.
------
Wer sich auf andere verlässt ist verlassen
Nach oben
Quote
Checker * So, 04. Jul 2010, 18:55 (21 Bytes)
VampiricRoyalty.gif
Einträge 124
seit Fr, 06. Jun 2008, 15:25
hat sich erledigt



Ich bin nur dafür verantwortlich, was ich sage, aber nicht dafür, was andere verstehen.
------
Das Gute - Dieser Satz steht fest - ist stets das Böse, was man lässt.
------
Wer sich auf andere verlässt ist verlassen
Nach oben
Quote
El Kassem * Di, 06. Jul 2010, 12:37 (8 Bytes)
PentaxMajorum.gif
Einträge 433
seit So, 01. Jun 2008, 21:47
Lösung?

My Weblog : http://www.pmatula.at

"Wir können natürlich so tun, als würden wir drüberstehen, wir können es intellektualisieren, relativieren, aber letztenendes sind, ähm, hübsche junge Dinger Hingucker." Dr.House
Nach oben
Webseite Quote
Checker * Mo, 12. Jul 2010, 19:52 (3895 Bytes)
VampiricRoyalty.gif
Einträge 124
seit Fr, 06. Jun 2008, 15:25
    Bildschirmausgabe:
    #include <stdio.h>
    #include <windows.h>
    #include "winhttp.h"
    #include <string.h>

    int main()
    {
    HINTERNET hopen, hconnect, hhttp;
    BOOL bResults;

    char *to_send = "testtesttesttesttesttesttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest"
    "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestte
    sttest";

    char header[2048];
    char *speichername = "Test120.txt";
    memset(header, 0, 10);

    sprintf(header, "%s-----------------------------90721038027008rn", header);
    sprintf(header, "%sContent-Disposition: form-data; name="upfile"; filename="%s"rn", header, speichername);
    sprintf(header, "%sContent-Type: text/plainrn", header);
    sprintf(header, "%srn", header);
    sprintf(header, "%s%srn", header, to_send);
    sprintf(header, "%s-----------------------------90721038027008rn", header);
    sprintf(header, "%sContent-Disposition: form-data; name="post"rn", header);
    sprintf(header, "%srn", header);
    sprintf(header, "%shochladenrn", header); //habe ein rn entfernt
    sprintf(header, "%s-----------------------------90721038027008--rn", header); //habe ein rn entfernt

    //WinHttpOpen
    hopen = WinHttpOpen(NULL, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);

    if(hopen == NULL)
    printf("Fehler InternetOpen()");
    //WinHttpConnect
    hconnect = WinHttpConnect(hopen, L"www.beispiel.de",
    INTERNET_DEFAULT_HTTP_PORT,0);
    if(hconnect == NULL)
    printf("Fehler InternetConnect()");

    //WinHttpOpenRequest
    hhttp = WinHttpOpenRequest(hconnect, L"POST", L"/upload.php", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES,0);
    if(hhttp == NULL)
    printf("Fehler HttpOpenRequest()");

    //WinHttpAddRequestHeaders
    bResults = WinHttpAddRequestHeaders( hhttp,
    L"Content-Type: multipart/form-data; boundary=---------------------------90721038027008",
    (ULONG)-1L,
    WINHTTP_ADDREQ_FLAG_ADD );
    if(!bResults)
    printf("Fehler WinHttpAddRequestHeaders()n");

    //WinHttpSendRequest
    bResults = WinHttpSendRequest(hhttp, WINHTTP_NO_ADDITIONAL_HEADERS, 0, NULL/*(LPVOID)header*/, 0/*strlen(header)*/,strlen(header), 0);

    if(!bResults)
    printf("Fehler WinHttpSendRequest()n");

    //WinHttpWriteData
    bResults = WinHttpWriteData(hhttp, (LPCVOID)header, strlen(header), 0);

    if(!bResults)
    printf("Fehler WinHttpWriteData()n");

    free(header);
    free(speichername);
    WinHttpCloseHandle(hopen);
    WinHttpCloseHandle(hconnect);
    WinHttpCloseHandle(hhttp);
    return EXIT_SUCCESS;
    }


Außerdem muss winhttp.lib eingebunden werden
[ Bearbeitet Mo, 12. Jul 2010, 19:53 ]

Ich bin nur dafür verantwortlich, was ich sage, aber nicht dafür, was andere verstehen.
------
Das Gute - Dieser Satz steht fest - ist stets das Böse, was man lässt.
------
Wer sich auf andere verlässt ist verlassen
Nach oben
Quote

Funktionen
Schnell-Antwort Sie müssen registriert und eingeloggt sein, um posten zu können
Beobachtung des Threads Sie müssen registriert und eingeloggt sein, um posten zu können
Bewertung des Threads
Für diesen Thread liegen noch keine Bewertungen vor. 

Gehe zu:     Nach oben



Moderatoren: Marc Ruef, ports, Stefan, Anja
Dieser Thread wird beobachtet von einem Benutzer: Checker

1997-2008 © Marc Ruef: Alle Rechte vorbehalten - Kopieren erlaubt!

Render time: 0.4287 second(s).