Rücksprungadresse überschrieben -> Kein Nutzen...

Hallo Community,
Folgendes nette Programm:
Code:
#include <iostream>
#include <cstring>
using namespace std;

void gate();


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

char buffer[5];
strcpy(buffer, argv[1]);

}

void gate()
{
	cout << "Willkommen in Area 51";
}

Wie man sieht, wird gate nicht ausgeführt. Daher soll der Buffer Overflow in der Main-Funktion genutzt werden, um rein zu kommen.

Also lege ich mir die Rücksprungadresse in gdb mittels disas gate zu. Gut, die z.B. so aus:
0x080486b2

So, wegen Little endian, dass ganze rückwärts und in \x: \xb2\x86\x04\x08

Nun versuche ich den Laden anzugreifen:

run `perl -e 'print "\xb2\x86\x04\x08"x8;'`

und (das gleiche):

Starting program: /home/.../a.out `perl -e 'print "AAAABBBBCCCCDDDDEEEEFFFFGGGG\xb2\x86\x04\x08";'`

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()

Kompiliert mit: g++ 3.3 [...] -z execstack und auch -z norelro
randomize_va_space ist ausgeschaltet.

Weiss jemand weiter?
 
Zurück
Oben