DonDom Geschrieben 2. Januar 2011 Geschrieben 2. Januar 2011 Guten Morgen, zum Thema "Sichere Programmierung" möchte ich gerne einige Dinge testen. Eines davon ist die Manupulation des ESP. Die Funktion check_authentication soll mit Hilfe eines Stackoverflows in einem kontrolliertes Fehlverhalten gesteuert werden. Hierfür soll die in Variable password_buffer eine Rücksprungadresse geschrieben ( welche per Überlauf) werden welche das ESP manipuliert. So soll die Rücksprungadresse (ESP) dann auf den printf Befehl innerhalb der IF-Verzweigung des mainbreichs zeigen. Durch dies würde die Passworteinfrage übergangen. Im Terminal mit Hilfe von dbg funktioniert dies, allerdings verstehe ich nicht ganz wie ich die richtige Adresse unter Eclipse herausfinde, denn hier steht im ESP nicht die wirkliche Adresse sondern ein Sprungbefehl auf einen weiteren Assemblercode. Dieser Code ist ein Codebeispiel aus dem Buch "Hacking: Die Kunst des Exploits" Hacking: Die Kunst des Exploits (mit CD): Amazon.de: Jon Erickson: Bücher #include <stdio.h> #include <stdlib.h> #include <string.h> int check_authentication(char *password) { char password_buffer[16]; int auth_flag = 0; strcpy(password_buffer, password); if(strcmp(password_buffer, "brillig") == 0) auth_flag = 1; if(strcmp(password_buffer, "outgrabe") == 0) auth_flag = 1; return auth_flag; } int main(int argc, char *argv[]) { if(argc < 2) { printf("Usage: %s <password>\n", argv[0]); exit(0); } if(check_authentication(argv[1])) { int a; printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"); printf(" Access Granted.\n"); printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"); } else { printf("\nAccess Denied.\n"); } } Zitieren
Guybrush Threepwood Geschrieben 3. Januar 2011 Geschrieben 3. Januar 2011 Dazu wirst du hier keine Hilfe bekommen. Siehe auch die Boardregeln, insbesondere Punkt 2. Zitieren
DonDom Geschrieben 3. Januar 2011 Autor Geschrieben 3. Januar 2011 Ich verstehe deine Sorge, allerdings handelt es sich hierbei um eine Wissenschaftlichearbeit bei der an einfachen Codebeispielen dargestellt werden soll, wie einfach man Abfragen usw. umgehen kann. Zitieren
Klotzkopp Geschrieben 3. Januar 2011 Geschrieben 3. Januar 2011 Ich verstehe deine Sorge, allerdings handelt es sich hierbei um eine Wissenschaftlichearbeit bei der an einfachen Codebeispielen dargestellt werden soll, wie einfach man Abfragen usw. umgehen kann. Welche Absichten du damit verfolgst, ist irrelevant. Mal ganz abgesehen davon, dass wir das ohnehin nicht prüfen könnten. Wir wollen nicht, dass dieses Board Anlaufstelle für Leute wird, die Anleitungen zum Ausnutzen von Sicherheitslücken suchen. Zitieren
DonDom Geschrieben 19. Januar 2011 Autor Geschrieben 19. Januar 2011 guten morgen, da ihr mir zu Hacking-Anleitungen keine hilfe geben dürft, habe ich noch eine andere Frage, die wie folgt lautet. Wenn ich eine Funktion aufrufe und mir einen Breakpoint setze kann ich mir ja mit Hilfe von gdb "info f" Infos über das Stackframe ansehen. Mit "x/32xw" den Stack. Hier kann man dann auch die in "info f" angezeigte Rücksprungadresse ermitteln. Nun zu meiner Frage. Wenn ich selbiges in einem Main-Programm mache, also "info f" und "x/32xw" dann finde ich die gespeicherte Rücksprungadresse nicht. Es kommt mir so vor alsob diese außerhalb des von mir angezigten Frames liegt. Warum ist das so und wie kann ich mir es doch anzeigen lassen? MFG DonDom Zitieren
DonDom Geschrieben 19. Januar 2011 Autor Geschrieben 19. Januar 2011 ooops eben rausgefunden... liegt halt außer halb von "x/32xw". Mit "x/128xw $esp" klappts. Falls es wen interessiert. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.