Ich habe mich vor einiger Zeit (und nach den Klausuren wieder
) mit Buffer Overflows beschäftigt und dabei ist folgendes kleines "CrackMe" entstanden.
Die alten Hasen hier werd sich darüber sicher scheckig lachen, aber für alle blutigen Anfänger ist das ganze vielleicht interessant.
Ich war auf jeden Fall stolz auf mich als ich es endlich geschafft hatte XD
Bei dieses CrackMe gibt es die Sourcen dazu.
Wenn jemand Probleme beim kompilieren haben sollte kann ich das ganze auch noch in ausführbarer Form hochladen.
Kompiliert und getest habe ich bis jetzt unter Debian 32bit per gcc und unter Windows 7 64bit per MinGw. Allerdings sollte es kein Problem sein diese eine Datei mit irgendeinem C Compiler zu kompilieren
Ziel des ganzen ist es durch eine Eingabe die "secFunc" oder vlt. sogar andere :wink: Sachen aufzurufen.
Als Lösung lasse ich alles gelten was die Ausgabe in der "secFunc" oder eine beliebige andere Methode anhaut.
Ein kleiner Tip vielleicht noch: Ich habe mir dazu ein kleines Program geschrieben (ein Script hätte es auch getan) was etwas ausgibt und die Ausgabe direkt in die Executable umleitet (./FiesahKraekah | ./CrackMyBuffer).

Die alten Hasen hier werd sich darüber sicher scheckig lachen, aber für alle blutigen Anfänger ist das ganze vielleicht interessant.
Ich war auf jeden Fall stolz auf mich als ich es endlich geschafft hatte XD
Bei dieses CrackMe gibt es die Sourcen dazu.
Wenn jemand Probleme beim kompilieren haben sollte kann ich das ganze auch noch in ausführbarer Form hochladen.
Kompiliert und getest habe ich bis jetzt unter Debian 32bit per gcc und unter Windows 7 64bit per MinGw. Allerdings sollte es kein Problem sein diese eine Datei mit irgendeinem C Compiler zu kompilieren

Ziel des ganzen ist es durch eine Eingabe die "secFunc" oder vlt. sogar andere :wink: Sachen aufzurufen.
Als Lösung lasse ich alles gelten was die Ausgabe in der "secFunc" oder eine beliebige andere Methode anhaut.
Ein kleiner Tip vielleicht noch: Ich habe mir dazu ein kleines Program geschrieben (ein Script hätte es auch getan) was etwas ausgibt und die Ausgabe direkt in die Executable umleitet (./FiesahKraekah | ./CrackMyBuffer).
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 512 // buffersize
void secFunc(void){
printf("r u a wizard ?\n");
// exit(1);
}
void weakFunc2(char *data){
char smallBuffer[LEN];
strcpy(smallBuffer, data);
printf("%s copied\n", data);
}
int main(void) {
char toLarge[1024];
if(scanf("%1024s", toLarge) < 0){ // \0 ?
printf("Trouble getting input\n");
exit(0);
}
weakFunc2(toLarge);
return 0;
}
Zuletzt bearbeitet: