Hallo Community,
Folgendes nette Programm:
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:
und (das gleiche):
Kompiliert mit: g++ 3.3 [...] -z execstack und auch -z norelro
randomize_va_space ist ausgeschaltet.
Weiss jemand weiter?
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?