Ergebnis 1 bis 2 von 2

Thema: Frage zu Register nach Buffer Overflow

  1. #1
    Registered User
    Registriert seit
    Jul 2012
    Beiträge
    1
    Renommee
    10

    Frage zu Register nach Buffer Overflow

    Halli Hallo,

    habe eine Frage, wenn ich folgenden Code starte:

    Code:
    #include <iostream.h>
    #include <stdio.h>
    #include <string.h>
    int main(int argc, char** argv) {
    char buffer[200];
    strcpy(buffer, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
    
    printf("Buffer: %s", buffer);
    
    }
    ... sehen meine Register so aus:



    Warum ist EIP nicht = 41414141?

    Und wie kann ich den EIP dazu bekommen, 41414141 zu beinhalten?

    BTW: Sämtliche Stack-Protections hab ich via EMET deaktiviert (DEP, ASLR, ...)

    Hochachtungsvoll,

    der Schnitzelkopf

  2. #2
    Moderator
    Registriert seit
    May 2002
    Beiträge
    641
    Renommee
    969

    AW: Frage zu Register nach Buffer Overflow

    Es wäre interessant, welcher Compiler eingesetzt wird (samt Optionen)
    CL 16.00.xx (VS 10) generiert bei mir per Default einen Stack-Cookie:
    MS VC:
    Code:
    CPU Disasm
    Address   Hex dump          Command                                  Comments
    01271013  |.  68 40812701   PUSH OFFSET 01278140                     ; ASCII "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    01271018  |.  8D85 30FFFFFF LEA EAX, [EBP-0D0]
    0127101E  |.  50            PUSH EAX
    0127101F  |.  E8 EC000000   CALL 01271110
    01271024  |.  83C4 08       ADD ESP, 8
    01271027  |.  8D8D 30FFFFFF LEA ECX, [EBP-0D0]
    0127102D  |.  51            PUSH ECX
    0127102E  |.  68 EC822701   PUSH OFFSET 012782EC                     ; ASCII "Buffer: %s"
    01271033  |.  E8 13000000   CALL 0127104B
    01271038  |.  83C4 08       ADD ESP, 8
    0127103B  |.  33C0          XOR EAX, EAX
    0127103D  |.  8B4D FC       MOV ECX, DWORD PTR SS:[EBP-4]
    01271040  |.  33CD          XOR ECX, EBP
    01271042  |.  E8 C1010000   CALL 01271208                            ; Stackcheck
    ...
    Stackcheck:
    01271208  /$  3B0D 00B02701 CMP ECX, DWORD PTR DS:[127B000]
    0127120E  |.- 75 02         JNE SHORT 01271212   <-- patcht man diesen JMP, wird der EIP überschrieben
    01271210  \.  F3:C3         REP RETN
    der GCC 4.5.2 generiert folgenden Code:
    Code:
    CPU Disasm
    Address   Hex dump          Command                                  Comments
    004013D1  |.  C74424 08 AC0 MOV DWORD PTR SS:[LOCAL.54], 1AC         ; /count => 428.
    004013D9  |.  C74424 04 643 MOV DWORD PTR SS:[LOCAL.55], OFFSET 0040 ; |src => a.403064 -> 'A'
    004013E1  |.  8D4424 18     LEA EAX, [LOCAL.50]                      ; |
    004013E5  |.  890424        MOV DWORD PTR SS:[LOCAL.56], EAX         ; |dest => OFFSET LOCAL.50
    004013E8  |.  E8 B3080000   CALL <JMP.&msvcrt.memcpy>                ; \MSVCRT.memcpy
    004013ED  |.  8D4424 18     LEA EAX, [LOCAL.50]
    hier gibt es schon den Fehler beim memcpy, da die "Stackspitze" zu wenig Platz bietet. Setzt man statt 428 255 ein, klappt es (sofern GCC nicht per Default -fstack-protector nutzt, dann gibt es einen ähnlichen Check, wie im VC compilat)

    PS: ASLR/DEP "greifen" erst bei dann ein, wenn man versucht den Code auszuführen.
    Geändert von CDW (12.07.2012 um 15:49 Uhr) Grund: VC 16 => CL 16 + VS Version
    Selig, wer nichts zu sagen hat und trotzdem schweigt!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. buffer overflow
    Von it_securit im Forum Malicious Code
    Antworten: 12
    Letzter Beitrag: 21.01.2008, 14:42
  2. Stack-Buffer-Overflow
    Von Chrisimo im Forum Malicious Code
    Antworten: 12
    Letzter Beitrag: 30.10.2006, 11:56
  3. Buffer Overflow
    Von Tequilla im Forum (In)Security allgemein
    Antworten: 12
    Letzter Beitrag: 18.08.2003, 16:01
  4. Buffer Overflow??
    Von snoopdogg2001 im Forum Reverse Engineering
    Antworten: 1
    Letzter Beitrag: 10.04.2002, 20:02
  5. Buffer Overflow
    Von Bytemaster im Forum (In)Security allgemein
    Antworten: 3
    Letzter Beitrag: 27.12.2000, 14:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •