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 » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 3 Beiträge
eulerscheZahl

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
Karlito

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
DienerAl Buffer Overflow für login bei C-Programm

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?