Finde die Sicherheitslücke ;)
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Finde die Sicherheitslücke ;)
Man kann es mit Strg+C abwürgen?
Edit: Strg+X->Strg+C
Edit: Strg+X->Strg+C
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Finde die Sicherheitslücke ;)
Nein?! ^^ Wie gesagt gehts darum in das beschriebene if zu kommen. Stell dir vor, dass im if vor dem return irgendwelche Daten aus einer Datenbank gelesen und ausgegeben werden. Es geht nicht darum das Programm zu beenden, sondern die primitive Sicherheitsprüfung zu umgehen.cloidnerux hat geschrieben:Man kann es mit Strg+X abwürgen?
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Finde die Sicherheitslücke ;)
Ich sehe im Moment nur 1 Problem, vielleicht kommt man darüber ja näher an die Lösung?
Und zwar: Wenn ich bei der Frage nach dem Passwort (also der zweiten, die erste Abfrage die das Passwort setzt ist ja sozusagen schon getan, wenn ich meinen "Angriff" durchführe) ein Null-Byte als Antwort eingebe, dann müsste ich von strlen(input) den Wert 0 bekommen, würde also input [ 0 - 1] bzw input [ -1] auf 0 setzen.
Praktisch wäre natürlich, wenn an der Stelle im Speicher password[0] sitzen würde ... das ist aber nun nicht der Fall. Bin ich auf dem richtigen Weg?
Und zwar: Wenn ich bei der Frage nach dem Passwort (also der zweiten, die erste Abfrage die das Passwort setzt ist ja sozusagen schon getan, wenn ich meinen "Angriff" durchführe) ein Null-Byte als Antwort eingebe, dann müsste ich von strlen(input) den Wert 0 bekommen, würde also input [ 0 - 1] bzw input [ -1] auf 0 setzen.
Praktisch wäre natürlich, wenn an der Stelle im Speicher password[0] sitzen würde ... das ist aber nun nicht der Fall. Bin ich auf dem richtigen Weg?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Finde die Sicherheitslücke ;)
Ok:
CTRL - D tut den Job
Nur so ganz verstehe ich noch nicht, warum ^^
*edit*
Doch nicht, funktioniert nur, wenn die EIngabe das Password + weitere Zeichen ist. Das hilft mir jetzt ja aber nicht weiter ...
CTRL - D tut den Job

Nur so ganz verstehe ich noch nicht, warum ^^
*edit*
Doch nicht, funktioniert nur, wenn die EIngabe das Password + weitere Zeichen ist. Das hilft mir jetzt ja aber nicht weiter ...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Finde die Sicherheitslücke ;)
Das ist schon mal nicht ganz falsch, aber noch nicht die Lösung.Dirty Oerti hat geschrieben:Bin ich auf dem richtigen Weg?
Die liegt in den (nicht korrekt verwendeten) Typen vergraben

It's as simple as that. And remember, Beethoven wrote his first symphony in C.
Re: Finde die Sicherheitslücke ;)
Nein ^^ Vergiss nicht, dass du normal noch ein Newline-Zeichen im String hast. Also diese ganzen Versuche mit dem Index -1 sind nicht richtig. Und selbst wenn man auf Index -1 kommt, könnte man dadurch nicht das if ausführen.Dirty Oerti hat geschrieben:Bin ich auf dem richtigen Weg?
Naja... eventuell wenn du eine seeeehr weite Definition von "(nicht korrekt verwendeten) Typen" hast, sonst eher nicht ^^mfro hat geschrieben:Die liegt in den (nicht korrekt verwendeten) Typen vergraben.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Finde die Sicherheitslücke ;)
Tut mir Leid, aber das stimmt nicht. Wenn du die Eingabe mit CTRL-D abbrichts (gleich beim ersten mal), dann steht in input NUR 0-Zeichen. Dein strlen liefert also den Wert 0.dani93 hat geschrieben: Nein ^^ Vergiss nicht, dass du normal noch ein Newline-Zeichen im String hast.
Guck:
[daniel@camino problem1]$ gdb screenlock
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/daniel/Projekte/c/security/problem1/screenlock...done.
(gdb) break
break break-range
(gdb) break screenlock.c:27
Breakpoint 1 at 0x4007d4: file screenlock.c, line 27.
(gdb) run
Starting program: /home/daniel/Projekte/c/security/problem1/screenlock
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
----- Vulnerable Screen Locker -----
Enter password: test
Screen locked
Enter password to unlock:
Breakpoint 1, main (argc=1, argv=0x7fffffffe2c8) at screenlock.c:27
27 inputLength = strlen( input );
(gdb) info locals
password = "test", '\000' <repeats 1019 times>
input = '\000' <repeats 1023 times>
inputLength = 0
passwordLength = 4
(gdb) step
28 input[inputLength - 1] = '\0';
(gdb) info locals
password = "test", '\000' <repeats 1019 times>
input = '\000' <repeats 1023 times>
inputLength = 0
passwordLength = 4
(gdb) step
29 --inputLength;
(gdb) info locals
password = "test", '\000' <repeats 1019 times>
input = '\000' <repeats 1023 times>
inputLength = 0
passwordLength = 4
(gdb) step
30 if( passwordLength == inputLength && strcmp( input, password ) == 0 )
(gdb) info locals
password = "test", '\000' <repeats 1019 times>
input = '\000' <repeats 1023 times>
inputLength = -1
passwordLength = 4
(gdb)
Damit hast du aber wahrscheinlich Rechtdani93 hat geschrieben:Also diese ganzen Versuche mit dem Index -1 sind nicht richtig. Und selbst wenn man auf Index -1 kommt, könnte man dadurch nicht das if ausführen.

Aber ich überlege mal weiter ^^
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Finde die Sicherheitslücke ;)
Sorry, ich war nach (zu) flüchtigem Lesen auf dem falschen Pfad (dachte, inputLength könne negativ werden, aber das stimmt nicht).dani93 hat geschrieben:Nein ^^ Vergiss nicht, dass du normal noch ein Newline-Zeichen im String hast. Also diese ganzen Versuche mit dem Index -1 sind nicht richtig. Und selbst wenn man auf Index -1 kommt, könnte man dadurch nicht das if ausführen.Dirty Oerti hat geschrieben:Bin ich auf dem richtigen Weg?
Naja... eventuell wenn du eine seeeehr weite Definition von "(nicht korrekt verwendeten) Typen" hast, sonst eher nicht ^^mfro hat geschrieben:Die liegt in den (nicht korrekt verwendeten) Typen vergraben.
Dafür kenne ich jetzt das Passwort. Es beginnt mit einem Sonderzeichen...
It's as simple as that. And remember, Beethoven wrote his first symphony in C.
Re: Finde die Sicherheitslücke ;)
Jop, hab ich schon gemerkt, sorry. Aber das mein ich nicht und es bringt dir nicht wirklich was.Dirty Oerti hat geschrieben:Tut mir Leid, aber das stimmt nicht. Wenn du die Eingabe mit CTRL-D abbrichts (gleich beim ersten mal), dann steht in input NUR 0-Zeichen. Dein strlen liefert also den Wert 0.dani93 hat geschrieben: Nein ^^ Vergiss nicht, dass du normal noch ein Newline-Zeichen im String hast.
?mfro hat geschrieben:Dafür kenne ich jetzt das Passwort. Es beginnt mit einem Sonderzeichen...
Re: Finde die Sicherheitslücke ;)
Nein. Ein anderes: %dani93 hat geschrieben: ?
It's as simple as that. And remember, Beethoven wrote his first symphony in C.