Finde die Sicherheitslücke ;)

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von nufan » Mi Jan 16, 2013 6:33 pm

mfro hat geschrieben:
dani93 hat geschrieben: ?
Nein. Ein anderes: %
Ich versteh grade nicht worauf du hinaus willst ^^ Dein Passwort gibst du doch selber ein ^^ Gut möglich, dass es mit % anfängt ^^

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von mfro » Mi Jan 16, 2013 6:36 pm

gib mal als Passwort (z.B.) "%d" ein. Das wird (wahrscheinlich) noch keinen Absturz bewirken, aber zumindest "unerwartetes" Verhalten.

Mit "%s" kommt es sehr wahrscheinlich zum Absturz. Falls nicht, häng' noch ein paar %d dran.

Ich dachte, das "Rätsel" wäre deine Idee? Dann wirst du doch wohl die Lösung kennen?
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von nufan » Mi Jan 16, 2013 6:38 pm

mfro hat geschrieben:gib mal als Passwort (z.B.) "%d" ein. Das wird (wahrscheinlich) noch keinen Absturz bewirken, aber zumindest "unerwartetes" Verhalten.

Mit "%s" kommt es sehr wahrscheinlich zum Absturz.
Das ist richtig, aber noch nicht die ganze Lösung.
mfro hat geschrieben:Ich dachte, das "Rätsel" wäre deine Idee? Dann wirst du doch wohl die Lösung kennen?
Tu ich auch ^^ Aber allgemein zu sagen dein Passwort beginnt mit % ist nach der von mir erwarteten Lösung falsch ;)

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von mfro » Mi Jan 16, 2013 6:49 pm

Tja, dann eben folgende Antwort:

ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von nufan » Mi Jan 16, 2013 7:06 pm

mfro hat geschrieben:ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.
Versuch es ;)

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von mfro » Mi Jan 16, 2013 7:17 pm

dani93 hat geschrieben:
mfro hat geschrieben:ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.
Versuch es ;)
Stimmt, ich muß %x'e nehmen und eine ASCII-Tabelle zur Hand haben, sonst geht der Puffer vorher aus.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von nufan » Mi Jan 16, 2013 7:19 pm

mfro hat geschrieben:
dani93 hat geschrieben:
mfro hat geschrieben:ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.
Versuch es ;)
Stimmt, ich muß %x'e nehmen und eine ASCII-Tabelle zur Hand haben, sonst geht der Puffer vorher aus.
Du bist auf dem richtigen Weg, aber da ist noch die eine oder andere kleine Hürde ;)

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von mfro » Mi Jan 16, 2013 7:30 pm

Der Rest mag compiler- (falls der auf die Idee kommt, die Arrays anders herum im Speicher abzulegen, was ihm niemand vorschreibt) und/oder prozessor- bzw. architekturabhängig (weil die Größe der lokalen Variablen begrenzt und ab einer bestimmten Größe ein anderes Allokierungsverhalten auftritt) sein, aber ab hier bin ich am Ziel ;).

Für mich ist die Sache jedenfalls gelöst. Eine klassische "format string vulnerability".
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Finde die Sicherheitslücke ;)

Beitrag von nufan » Mi Jan 16, 2013 7:35 pm

mfro hat geschrieben:Der Rest mag compiler- (falls der auf die Idee kommt, die Arrays anders herum im Speicher abzulegen, was ihm niemand vorschreibt) und/oder prozessor- bzw. architekturabhängig (weil die Größe der lokalen Variablen begrenzt und ab einer bestimmten Größe ein anderes Allokierungsverhalten auftritt) sein, ...
Da hast du natürlich recht.
mfro hat geschrieben:aber ab hier bin ich am Ziel ;).
Ich denke das kann man allgemein (auch aufgrund deiner obigen Hinweise) dann wohl als die 1. korrekte Lösung werten :)
mfro hat geschrieben:Für mich ist die Sache jedenfalls gelöst. Eine klassische "format string vulnerability".
Genau. Ich finde das ist ein schönes Beispiel, wie man eine anscheinend harmlose Funktion wie printf() missbrauchen kann.

Übrigens warnt der gcc sogar vor dieser Verwendung von printf(), zumindest mit "-Wall".

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Finde die Sicherheitslücke ;)

Beitrag von Xin » Mi Jan 16, 2013 9:09 pm

Code: Alles auswählen

#include <stdio.h>
  fgets( password, sizeof( password ), stdin );
  passwordLength = strlen( password );
  password[passwordLength - 1] = '\0';
Gebe ich kein Passwort ein, schreibe ich vor das password-Feld?

Code: Alles auswählen

    printf( input );
printf( "%s", input ); oder fputs?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten