Mit Puffer-überlauf, der zum ausführen von shell-code

Ich habe lernen computer-Sicherheit in letzter Zeit und kommen über ein paar Probleme, und ich habe einige Schwierigkeiten mit diesem im besonderen.

Ich eine Funktion mit einer festen Puffer ich brauche zu überlaufen, um zum ausführen von shellcode in der Datei shellcode. Die Funktion ist ganz einfach:

void vuln(char *str) {
    char buf[64];
    strcpy(buf, str);
    //function provided to display stack on command prompt
    dump_stack((void **) buf, 21, (void **) &str);
}

Meine erste Vermutung war, zum ändern der Rücksprungadresse, die eip, der Funktion, um zu finden und auszuführen, was in der Datei shellcode, aber ich merkte, ich habe keine Adresse, um die Datei, die ich darstellen kann, in einen hexadezimalen Wert. Ich bin ziemlich sicher, dass ich brauche zu manipulieren, um die Rückkehr-Adresse, also derzeit, was ich bin, eine Berufung ist:

//the string is passed as a command line arg
./buffer_overflow_shellcode $(python -c "print 'A'*72 + '\x41\xd6\xff\xff' ")

meiner Ausgabe:

Stack dump:
0xffffd600: 0xffffd7fd (first argument)
0xffffd5fc: 0x08048653 (saved eip)
0xffffd5f8: 0xffffd641 (saved ebp)
0xffffd5f4: 0x41414141
0xffffd5f0: 0x41414141
0xffffd5ec: 0x41414141
0xffffd5e8: 0x41414141
0xffffd5e4: 0x41414141
0xffffd5e0: 0x41414141
0xffffd5dc: 0x41414141
0xffffd5d8: 0x41414141
0xffffd5d4: 0x41414141
0xffffd5d0: 0x41414141
0xffffd5cc: 0x41414141
0xffffd5c8: 0x41414141
0xffffd5c4: 0x41414141
0xffffd5c0: 0x41414141
0xffffd5bc: 0x41414141
0xffffd5b8: 0x41414141
0xffffd5b4: 0x41414141
0xffffd5b0: 0x41414141 (beginning of buffer)
Segmentation fault

das python-Skript einfach druckt 72 Buchstabe A ist zu einem überlauf des Puffers zu dem Punkt, der EDV und eip, nachdem ich die Stelle des edp-Adresse mit der zusätzlichen Adresse und kommen Sie an die Adresse zurück, bereit, Sie zu manipulieren. Jede Hilfe wird wirklich geschätzt, danke!

Haben Sie kompiliert den code mit der -really-no-protection und -make-me-vulnerable-to-everything Fahnen? Das ist heute notwendig für die Nutzung.
Fischer ja, ich habe kompiliert früheren computer-Sicherheits-Programme korrekt ausgeführt haben und in der Lage gewesen, zu einem überlauf führen Sie ohne Probleme. Ich weiß, dass mein Programm läuft wie vorgesehen
Okay, nur die überprüfung der offensichtlichen verdächtigen.
Haben Sie deaktivieren address space layout randomization? (echo 0 > /proc/sys/kernel/randomize_va_space)
Jungs, das Programm ist in Ordnung, ich schwöre es. Es kompiliert und funktioniert dementsprechend keine Gedanken über die compile-Zeit, ich brauche Hilfe mit der Logik überlaufen und das eigentliche Programm.

InformationsquelleAutor Syntactic Fructose | 2013-05-01

Schreibe einen Kommentar