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"); } }
Guybrush Threepwood Geschrieben 3. Januar 2011 Geschrieben 3. Januar 2011 Dazu wirst du hier keine Hilfe bekommen. Siehe auch die Boardregeln, insbesondere Punkt 2.
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.
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.
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
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden