School CTF 2015 Writeups

School-CTF war ein kurzes 5 stündiger CTF (Cature the Flag). Nichtdestotrotz wurden gute Challenges angeboten und es hat Spaß gemacht. Internetwache konnte sich auf dem 17ten Platz positionieren.

Die Jury hat die Musterlösungen veröffentlicht und viele Ansätze weichen nicht ab. Daher werden wir nur kurz die Lösungen beschreiben, bei denen wir einen anderen Weg gewählt haben.

Admin 200: Awesome web

Nach dem Speichern des privaten Schlüssels admin, konnte man sich zu einem der SSH Ports verbinden:

     ssh -v -p 15026 -i /tmp/admin.key -F /dev/null admin@sibears.ru

Daraufhin begrüßte uns eine einfache Shell:

1
2
3
4
admin:~$ ls
flag.txt
admin:~$ ?
cd  clear  echo  exit  help  history  ll  lpath  ls  lsudo

Man sieht die Flagge, hat aber nur eine limitierten Satz an Kommandos. Ich probierte einfach history und scrollte durch die Liste von Kommandos, die wohl von anderen CTF Teilnehmern stammten. Glücklicherweise entdeckte ich darin einen komisch aussehenden String, der sich als korrekte Flagge herausstellen sollte: 4dm1n_1s_1mp0r74nt_m^^mk3y

Wir glauben nicht, dass dies die beabsichtigte Lösung ist, daher wollten wir herausfinden, ob wir mit dem gesetzten Limit die Flagge extrahieren können.

1
2
3
4
admin:~$ ls /
*** forbidden path: /
admin:~$ echo $(< flag.txt)
*** forbidden syntax: echo $(< flag.txt)

Nach einer längeren Zeit des Rumprobierens und etlichen forbidden syntax Fehlermeldungen, standen wir schon vor der Resignation, als wir dieses Kommando ausprobierten:

1
2
admin:~$ echo "$(cat flag.txt)"
4dm1n_1s_1mp0r74nt_m^^mk3y

YAY - Aber wir haben immer noch nicht herausgefunden, ob das eine gültige Lösung oder ein Bypass des Filters ist.

Crypto 100: Lazy cryptanalyst

Wir googelten nicht nach der Webseite, welche im Bild zu sehen war, sondern fingen an, ein kleines Pythonscript zu schreiben, welches die Zeichen Schritt-für-Schritt ersetzte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
text = "bsxz [....] qoiy."

newtext = ""

switch = {  'b':'t',
                        's':'h',
                        'x':'i',
                        'z':'s',
                        'u':'f',
                        'm':'y',
                        'o':'m',
                        'i':'e',
                        'q':'a',
                        'g':'o',
                        'v': 'l',
                        'h':'u',
                        'f': 'w',
                        'y': 'n',
                        'j':'k',
                        'w': 'b',
                        'e':'d',
                        'l':'g'
                        }
for char in text:
        if char in switch:
                char = switch[char]
        newtext += char
print(newtext)

Nachdem wir auf diesem Weg die Aufgabe lösten, erhielten wir von Denis den Hinweis mit der Webseite quipqiup.com, welche sofort die richtige Lösung fand.

Joy 100: Highly professional

Der einzige Unterschied zu der Musterlösung war, dass wir Google’s reverse image search genutzt haben, um herauszufinden, dass es etwas mit der Serie Mr.Robot zu tun hat. Weiteres Googeln führte zu einem Wiki, in dem die Namen der drei Angestellten aufgelistet waren. Einer davon war die Flagge: Gideon_Goddard

Stegano 100: Pure color

Die Beispiellösung nutzt MS Paint um die Hintergrundfarbe zu ändern. Wir haben GIMP genutzt und spielten mit den Farbkurven der Grundfarben Rot, Grün, Blau herum. Beim Bewegen der blauen Kurven in die rechte, untere Ecke erschien ein gelber Text auf dem Bild. Es war die Flagge: flag_is_this_is_a_simple_stego

Flags

Hier ist eine Liste mit allen gelösten Challenges:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
admin200: FLAG_G0D_DAMN_BR0_U_R_S0_C00L_DECRYPTOR
crypt100: a day without blood is like a day without sunshine
crypt200: remember_the_plaintext
joy100: Gideon_Goddard
web100: l375_$7ar7_w3b_h4ck5
steg100: true_steganographers_doesnt_need_any_tools
steg200: flag_is_this_is_a_simple_stego
admin200: 4dm1n_1s_1mp0r74nt_m^^mk3y
web200: n0t_0nly_1nj3ct10ns_4r3_d4ng3r0us
exploit100: thanks_god_we_got_not_only_binaries
ppc200: flag_1s_1t_w@s_t00_easy
joy200: flag_is_dont_let_apples_hit_your_brain (strings on level0)
ppc400: ~y@y_I_cod3d_!7_^^
web400: U_c4n_b3_v3ry_us3ful_0n_upc0m1ng_3l3ct10ns
admin300: Flag_is_{7Ru3_4dM1n_C4N_D0_4Ny7h1NG_Fr0M_C0MM4nD_L1N3}
exploit300: every_haxor_loves_EvAlS

Das Team der Internetwache.org