Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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");

   }

}

Geschrieben

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.

Geschrieben
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.

  • 3 Wochen später...
Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...