mauralix
0
Hallo liebe Hacker!
Ich experimentiere derzeit mit Bufferoverflows und habe ein kleines Problemchen die Payload in meinem kleinen Testprogrammchen auszuführen wegen eines 0x00 in der Adresse.
Zunächst das angreifbare Testprogramm:
Also kurz: Über stdin werden bis zu 1023 bytes eingelesen und diese and process übergeben. Das Array too_small hat aber wie man sieht nur Platz für 10 Bytes.
Wenn ich "AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH" eingebe wird der EIP mit den EEEE überschrieben. Hier möchte ich eigentlich die Adresse des Shellcodes einsetzen. Der Shellcode könnte doch gleich nach den EEEEEs beginnen. Das Problem ist dann allerdings, dass diese Adresse mit 0x00... beginnt und jetzt kann ich diese nicht einsetzen wegen des Nullabschlusses eines C-Strings. Hat jemand eine Idee wie man dieses Problem umgeht?
Ich experimentiere derzeit mit Bufferoverflows und habe ein kleines Problemchen die Payload in meinem kleinen Testprogrammchen auszuführen wegen eines 0x00 in der Adresse.
Zunächst das angreifbare Testprogramm:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
void process(char *data){
char too_small[10];
strcpy(too_small,data);
}
int main(int argc,char **argv)
{
char buffer[1024];
fgets(buffer,sizeof(buffer),stdin);
process(buffer);
printf("end\n");
system("pause");
return 0;
}
Wenn ich "AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH" eingebe wird der EIP mit den EEEE überschrieben. Hier möchte ich eigentlich die Adresse des Shellcodes einsetzen. Der Shellcode könnte doch gleich nach den EEEEEs beginnen. Das Problem ist dann allerdings, dass diese Adresse mit 0x00... beginnt und jetzt kann ich diese nicht einsetzen wegen des Nullabschlusses eines C-Strings. Hat jemand eine Idee wie man dieses Problem umgeht?