Ich versteh grade nicht worauf du hinaus willst ^^ Dein Passwort gibst du doch selber ein ^^ Gut möglich, dass es mit % anfängt ^^mfro hat geschrieben:Nein. Ein anderes: %dani93 hat geschrieben: ?
Finde die Sicherheitslücke ;)
Re: Finde die Sicherheitslücke ;)
Re: Finde die Sicherheitslücke ;)
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?
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.
Re: Finde die Sicherheitslücke ;)
Das ist richtig, aber noch nicht die ganze Lösung.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.
Tu ich auch ^^ Aber allgemein zu sagen dein Passwort beginnt mit % ist nach der von mir erwarteten Lösung falschmfro hat geschrieben:Ich dachte, das "Rätsel" wäre deine Idee? Dann wirst du doch wohl die Lösung kennen?

Re: Finde die Sicherheitslücke ;)
Tja, dann eben folgende Antwort:
ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.
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.
Re: Finde die Sicherheitslücke ;)
Versuch esmfro hat geschrieben:ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.

Re: Finde die Sicherheitslücke ;)
Stimmt, ich muß %x'e nehmen und eine ASCII-Tabelle zur Hand haben, sonst geht der Puffer vorher aus.dani93 hat geschrieben:Versuch esmfro hat geschrieben: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.
Re: Finde die Sicherheitslücke ;)
Du bist auf dem richtigen Weg, aber da ist noch die eine oder andere kleine Hürdemfro hat geschrieben:Stimmt, ich muß %x'e nehmen und eine ASCII-Tabelle zur Hand haben, sonst geht der Puffer vorher aus.dani93 hat geschrieben:Versuch esmfro hat geschrieben:ich gebe so viele %c's ein, bis ich das Passwort zu sehen bekomme.

Re: Finde die Sicherheitslücke ;)
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".

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.
Re: Finde die Sicherheitslücke ;)
Da hast du natürlich recht.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, ...
Ich denke das kann man allgemein (auch aufgrund deiner obigen Hinweise) dann wohl als die 1. korrekte Lösung wertenmfro hat geschrieben:aber ab hier bin ich am Ziel.

Genau. Ich finde das ist ein schönes Beispiel, wie man eine anscheinend harmlose Funktion wie printf() missbrauchen kann.mfro hat geschrieben:Für mich ist die Sache jedenfalls gelöst. Eine klassische "format string vulnerability".
Übrigens warnt der gcc sogar vor dieser Verwendung von printf(), zumindest mit "-Wall".
- 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 ;)
Code: Alles auswählen
#include <stdio.h>
fgets( password, sizeof( password ), stdin );
passwordLength = strlen( password );
password[passwordLength - 1] = '\0';
Code: Alles auswählen
printf( input );
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.