Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Buffer Overflow für login bei C-Programm » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Buffer Overflow für login bei C-Programm
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
DienerAl
Grünschnabel


Dabei seit: 13.01.2016
Beiträge: 1

Buffer Overflow für login bei C-Programm Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Guten Tag,
ich würde mich gerne bei folgendem Programm mit einem Buffer overflow einloggen können als Übung. Das password kenne ich dabei nicht. Nun habe ich bereits vieles versucht, beispielsweise username mit vielen Zeichen zu überladen, das userPassword zu überladen. Jedoch habe ich wahrscheinlich einen Denkfehler wie der Stack aufgebaut ist. Mir fehlt im Moment jeder Ansatz für die Lösung.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int password = 12341234;
    char username[10];
    char userPassword[10];

    printf("Enter username:");
    gets(username);
    printf("Enter password:");
    gets(userPassword);

    int inputCode = atoi(userPassword);

    if (inputCode == password) {
        printf("Logged in.\n");
    } else {
        printf("Wrong passcode.\n");
    }
}


Unter Linux habe ich bereits mit gdb mir den Assembler Code angesehen, und ich vermute, dass ich irgendwie die Rücksprungadresse verändern muss oder so. Aber wie gesagt, mir fehlt selbst der Ansatz zu einer Lösung.
Kann mir da bitte jemand helfen?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DienerAl: 13.01.2016 12:13.

13.01.2016 12:12 DienerAl ist offline Beiträge von DienerAl suchen Nehmen Sie DienerAl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo DienerAl,

wir hatten das mal in der "Betriebssysteme und Sicherheit"-Vorlesung. Der Dozent hat als Grundlage diese Seite verwendet: http://www.phrack.org/issues/49/14.html#article. Ich habe mir den Artikel nie vollständig durchgelesen und weiß deshalb auch nicht, ob auch die entsprechenden Hinweise gegeben werden, welche Maßnahmen man auf modernen Betriebssystem ergreifen muss, damit ein solcher Angriff funktioniert. Aktuelle Betriebssysteme verwenden verschiedene Technologien, welche Buffer-Overflows nutzlos machen. Ich denke in dem Zusammenhang sind "Address Space Randomization", "Speicherschutz" und "virtueller Speicher", nützliche Stichworte.

Leider kann ich also nur eine halbe Hilfestellung geben und darauf hinweisen, dass Pufferüberläufe ohne das Abschalten bestimmter Mechanismen nicht mehr funktionieren sollten.

Gruß,

Karlito
13.01.2016 13:30 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Einen Overflow kriegt man eigentlich noch ganz gut hin. Wenn man einen Funktionszeiger schreiben möchte, wird es komplizierter (Stichwort ASLR).
Das Problem (zumindest bei mir) ist, dass die password Variable nicht nach den strings steht:
code:
1:
2:
3:
4:
5:
6:
7:
	printf("username: %p\n", username);
	printf("userPassword: %p\n", userPassword);
	printf("password: %p\n", password);
//Ausgabe:
username: 0x7ffe6607a070
userPassword: 0x7ffe6607a080
password: 0xbc4ff2


__________________
Syntax Highlighting fürs Board (Link)
13.01.2016 16:55 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Buffer Overflow für login bei C-Programm