P4CTF 2015 - Statystyki i trochę kulis

11

Edit: aaa. Nie wiedziałem że tego tyle wyjdzie. W każdym razie, niektórzy pytali o kulisy, albo o statystyki, albo o ciekawe wysyłane flagi. W tym poście jest to wszystko i jeszcze trochę.
Mam nadzieje że wystarczy wszystkim fanom statystyk na długo :P. (chociaż szczerze mówiąc, sama częśc ze "statystykami" to ledwo dwa wykresy powtarzane dla każdego zadania - ale nie miałem ciekawszych pomysłów na wizualizację.

<font size="10">Statystyki p4ctf</span>

OK, więc konkurs dobiegł końca, czas na obiecane statystyki (z pewnym opóźnieniem, ale zawsze).

Mowa o p4ctf (http://4programmers.net/Forum/Spolecznosc/262444-ogloszenie_-_p4ctf_2015_dla_uzytkownikow_forum) który organizowaliśmy w ostatni weekend.

Jeśli ktoś uczestniczył i chce się podzielić rozwiązaniami - zapraszamy do http://4programmers.net/Forum/Spolecznosc/263177-p4_ctf_2015_-_write-upy_i_rozwiazania.

Na początek, dzięki wszystkim za uczestnictwo. Trzeba przyznac że dopisała frekwencja, nawet bardziej niż się spodziewaliśmy. Aż 121 osób wystartowało, z tego 80 zrobiło przynajmniej jedno "prawdziwe" zadanie.
Sporo użytkowników zarejestrowało się specjalnie po to, żeby wystartować w CTFie (nie mam dokładnych liczb), ale większość uczestników to jednak stali bywalcy.

<font size="5">Trochę o pomyśle, oraz timeline</span>

Pomysł na zorganizowanie konkursu wpadł nam do głowy na spotkaniu autorskim z Gynvaelem Coldwindem 7 listopada gdy przypomniało się nam, że 4programmers również w ramach patronatu medialnego dostanie kilka książek. Tego samego dnia napisałem (Rev) do MSMa, a pierwsze akcje w tym kierunku podjeliśmy 22 listopada (pierwsze akcje = założenie kanału na slacku).

Organizacja nie szła jednak zbyt żwawo, więc postawnowiliśmy działać (uwaga: dużo cytatów ze slacka):

2 grudnia
<msm> no dobra, trzeba deadline ustawić
<msm> bo when its done może być w lutym równie dobrze :P

Niestety, motywacja werbalna nie wystarczyłą, więc trzeba było użyć drastycznych środków:
4 grudnia
<msm> ej, panowie, może ogłosimy termin CTFa np. na za dwa tygodnie
<msm> a potem sie będziemy musieli spinać żeby zdążyć :D
<shalom> ja już na mikroblogu dawno napisałem że coś się szykuje :D
<shalom> można by wreszcie podać konkretny termin, to fakt :D

8 grudnia
Powstają pierwsze zadania, @Demonical Monk ma okazje być pierwszym testerem zadań webowych spoza p4.

12 grudnia
<shalom> @msm @Rev jak tam idzie pisanie dashboarda?
<msm> reva teraz nie ma przy komputerze
<rev> sorry, spałem :P. w nocy zacznę!

Wszystko jak zawsze gotowe i przetestowane z wyprzedzeniem!

14 grudnia
<nazywam> Nie chciałbym popędzać ale jak wam ta strona idzie? Bo dobrze by było jeszcze przetestować trochę :>
<rev> nazywam: idzie :P. będzie
<shalom> Czytaj: jeszcze nie zaczęta :P
<rev> dokładnie
<shalom> ja tam oczekuje takiej opcji http://motherfuckingwebsite.com/

16 grudnia
Serwer CTFa stoi, można się nawet logować. Powstawje też w końcu prototyp scoreboarda.

17 grudnia
Scoreboard prawie skończony, zadania powoli się pojawiają

18 grudnia
Wrzucamy zadania. Nie wszystko idzie gładko:

8:00 - jeszcze optymistycznie
<other019> ehh no to do 18 mam czas poprawić moje forensics

9:30
<shalom> @Rev coś się tabelka rozjeżdża jak nazwy są za długie

10:01
<rev> trzeba wymyślić co dać na stronie powitalnej tak swoją drogą

10:04
<rev> FLAGA = p4{you_must_have_hired_chinease!} - ta literówka we fladze jest zamierzona?

10:28
<rev> @msm by się na przykład przydał do ogarnięcia swoich zadań

15:26 - pesymista z tego shaloma
<shalom> ej no jest 15:30 a jeszcze nie wszystkie zadania są dodane kiedy wy chcecie przetestować czy wszystko działa?

18:35 - w końcu wszystko stoi
<rev> sprawdzać! wszystko od deski do deski

19:03 - jesteśmy pełni optymizmu
<rev> jak weźmie mniej niż 10 osób udział w konkursie to bym przedłużył go do całego tygodnia i poprosił Gynvaela o dodatkową reklamę np. na wykopie :P

19:29 - ale ktoś wziął udział jednak, co niektórych zaskoczyło:
<rev> co to za ludzie?!

19:55 - ostatnie ustalenia
<rev> coś wymyślę, z modelu wywalę db.session.commit() i tyle ;P

20:00 - początek CTFa

20:01 - radość i niedowierzanie
<rev> jeeeeeeeeeeest
<rev> pierwszy solve
<nazywam> I jeszcze wzsystko stoi!

20:07 - na niektórych liczyliśmy bardziej niż na innych
<rev> o, karolina się zalogowała

20:33 - oraz kibicowaliśmy
<rev> gogogo karolina, zrób re0, będziesz druga

21:00 - trochę fuckupów
<other019> ok ogłoszenie zrypałem flage do cebulacipher #2 prosimy o ponowne wysłanie

... i jakoś to poszło samo. Wystarczy chyba bo i tak sam przedwstęp tego posta ma 100 linijek.

<font size="5">Trochę o organizacji.</span>

Cała infrastruktura stała u Reva na serwerze, on też zajął się napisaniem scoreboardu, konfiguracją VPNa, postawieniem containerów i ogólnie backendem (takich adminów potrzebujemy!).
Zadania które miały ryzyko zostać wyexploitowane (tzn. na przykład web) w niespodziewany sposób stały na osobnych kontenerach. Wyjątkiem był piet - na upartego można było ukraść flagi z weba pisząc program graficzny w piecie.
Była to ciakawa opcja, ale nikt tak tego nie rozwiązał (a przynajmniej nie zauważyliśmy) - może to i dobrze, bo pisanie programów bitmapą było chyba dużo trudniejsze niż nasze zadania webowe.

Przed CTFem (prawie) wszyscy rozwiązaliśmy (prawie) wszystkie zadania żeby ocenić ich trudność. Jeśli kogoś to interesuje, tabelka z naszymi wycenami:

| (author) | msm | shalom | nazywam | other | cr0
web0 | nazywam | 100 | 100 | 100 | 100 | 50
web1.1 | nazywam | 200 | 100 | 100 | 150 | 50
web1.2 | nazywam | 400 | 300 | 200 | 300 | 50
web2 | nazywam | 300 | 200 | 150 | 200 | 100
crypto1.1 | other019 | 50 | 50 | 50 | 50 | 50
crypto1.2 | other019 | 50 | 50 | 50 | 50 | 50
crypto1.3 | other019 | 100 | 100 | 75 | 50 | 50
crpyto1.4 | other019 | 50 | 50 | 50 | 50 | 100
crypto1.5 | other019 | 200 | 200 | 150 | 50 | 150
crypto2 | shalom | | | 400 | | 400
re0 | msm | 200 | | 200 | | 200
re1 | msm | 400 | | 400 | | 400
stegano1 | nazywam | 200 | inf | 250 | 400 | 200
forensics1 | other019 | 400 | 200 | 300 | 300 | 300
forensics2.1 | nazywam | 100 | 100 | 75 |
forensics2.2 | nazywam | 300 | 300 | 250 |
misc1 easy | shalom | | 200 | 250 | | 200
misc1 hard | shalom | | 400 | | | 400
web3 | nazywam | 200 | 100 | 100 | 100 | 100
stegano2 | nazywam | | | 200 |
misc2 lvl1 | shalom | | 300 | |
misc2 lvl2 | shalom | | 100 | |
misc2 lvl3 | shalom | | 200 | |
piet | other019 | | | 200+300 |

Jeśli porównać to z ilością rozwiązań - nie zawsze okazywało się że nasze przewidywania były słuszne (no ale, zawsze tak jest).

<font size="5">Wysyłane flagi</span>

Wysłaliście 2041 flag, z czego 680 poprawnych.

Pierwszą osobą która rozwiązała cokolwiek był @Hummin, któremu rozwiązanie wprowadzającego zadania zajęło 61 sekund.
Pierwszą osobą która zrobiła "prawdziwe zadanie" był @Xert, który zrobił zadanie easyre w 4 minuty 24 sekundy (ok, przyznaje, to zadanie powinno się nazywać too easy re).
Dokładniejsze statystyki pierwszych rozwiązań są podane per zadanie.

Z drugiego końca, ostatnią osobą która wysłała flagę (błędną) to @Humpback (1 minuta 20 sekund przed końcem CTFa).
A ostatnią osobą która rozwiązała zadanie przed końcem CTFa to @Lord Darkstorm, który wyrobił się w 2 minuty 10 sekund przed końcem (było blisko).

Z ciekawszych wysyłanych flag (mam nadzieję że nikt się nie obrazi po zobaczeniu siebie - każdy błądzi, ale niektórzy bładzili ciekawiej niż inni):

  • Przy zadaniu polegającego na napisaniu bota rozpoznającego języki, niektórzy chcieli pójśc na skróty (:P):
  • p4{polski} dla zadania English, do you speak it?
  • Francuski dla zadania English, do you speak it?

Niektórzy wysyłali flagi do złego zadania (w dodatku z literówką)

  • p4{FTP_Free_To_Pw n} dla zadania Hasło Shaloma

A później bez literówki, ale dalej do złego zadania:

  • p4{FTP_Free_To_Pwn} dla zadania Hasło Shaloma

Niektórzy jakimś cudem kopiowali znaki specjalne z flagą, przez co nie dostawali zasłużonych punktów:

  • p<90>4{path_traversal_cats} dla zadania Challenge Koty MSMa
  • "PR33TY_G00D^A��4��^T dla zadania Cebula cipher #1

Niektórzy bardzo nisko szacują jakość hasła shaloma:

  • p4{} dla zadania Hasło Shaloma

Albo podejrzewali o wschodnie powiązania:

  • Будете ли вы нам помочь? dla zadania Hasło Shaloma

(@Shalom pozdrawia też tych, którzy próbowali się zalogować na jego konto flagą z tego zadania. Niestety, zmienił hasło w piątek więc już nie działała).

Niektorzy byli wytrwali w wysyłaniu błędnej flagi (licząc że w końcu przejdzie):

2015-12-18 22:07:43,744 INFO: <User xxx> sent flag: "F00LST4RT" for <Challenge Cebula cipher #3>
2015-12-18 22:07:49,054 INFO: <User xxx> sent flag: "F00LST4RT" for <Challenge Cebula cipher #4>
2015-12-18 22:07:52,407 INFO: <User xxx> sent flag: "F00LST4RT" for <Challenge Cebula cipher #4>
2015-12-18 22:07:59,664 INFO: <User xxx> sent flag: "F00LST4RT" for <Challenge Cebula cipher #5>
2015-12-18 22:08:05,296 INFO: <User xxx> sent flag: "F00LST4RT" for <Challenge Cebula cipher #3>

Albo nalegali na pomoc:

2015-12-18 22:45:05,157 INFO: <User xxx> sent flag: "p4{Will you help us}" for <Challenge Capture The Data #1> 
2015-12-18 22:45:15,409 INFO: <User xxx> sent flag: "Will you help us" for <Challenge Capture The Data #1>
2015-12-18 22:45:20,929 INFO: <User xxx> sent flag: "p4{Will you help us?}" for <Challenge Capture The Data #1>
2015-12-18 22:45:29,661 INFO: <User xxx> sent flag: "p4{Will you help us?}" for <Challenge Capture The Data #1>

A niektórzy nie lubią wścibskich administratorów czytających cudze odpowiedzi:

  • PROSZĘ NIE CZYTAĆ ODPOWIEDZI, LUDZIE TUTAJ PRÓBUJĄ KOMBINOWAĆ!!! dla zadania Challenge Cebula cipher #1

A, i pozdrowienia dla @Gynvael Coldwind który wszedł na CTF, po 10 minutach zrobił jedno z trudniejszych (0 solvów wtedy) zadań i sobie poszedł. Już się baliśmy że chce od nas wygrać własną ksiażkę :P.

To teraz po kolei zadania.

Pierwszy wykres w każdym opisie mówi ile procent osób:

  • wysłało w końcu dobrą flagę i rozwiązało zadanie
  • wysłało zła flagę i nie wysłało później dobrej flagi
  • nie wysłało żadnej flagi

Drugi wykres mówi ile procent wysyłanych flag do zadania była poprawna, a ile procent była błędna.

<font size="5">zadanie Cebula cipher #1 (kategoria: crypto) (50p)</span>

Rozwiązało zadanie: 47
Spróbowało rozwiązać (wysłało flagę): 63
Ale nie podołało (wysłało tylko złe flagi): 16
Zignorowało zadanie: 63

solve_Cebulacipher1.png try_Cebulacipher1.png

Pierwsze rozwiązania:

  • @Marszal rozwiązał zadanie w 0.16 godzin po rozpoczęciu
  • @Mikan rozwiązał zadanie w 0.16 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 0.34 godzin po rozpoczęciu

<font size="5">zadanie Cebula cipher #2 (kategoria: crypto) (50p)</span>

Rozwiązało zadanie: 35
Spróbowało rozwiązać (wysłało flagę): 46
Ale nie podołało (wysłało tylko złe flagi): 11
Zignorowało zadanie: 80

solve_Cebulacipher2.png try_Cebulacipher2.png

Pierwsze rozwiązania:

  • @alamapsa rozwiązał zadanie w 1.1 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 1.11 godzin po rozpoczęciu
  • @kot.4p rozwiązał zadanie w 1.4 godzin po rozpoczęciu

<font size="5">zadanie Cebula cipher #3 (kategoria: crypto) (75p)</span>

Rozwiązało zadanie: 10
Spróbowało rozwiązać (wysłało flagę): 21
Ale nie podołało (wysłało tylko złe flagi): 11
Zignorowało zadanie: 105

solve_Cebulacipher3.png try_Cebulacipher3.png

Pierwsze rozwiązania:

  • @superhero01 rozwiązał zadanie w 0.97 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 2.27 godzin po rozpoczęciu
  • @tsugumo rozwiązał zadanie w 2.35 godzin po rozpoczęciu

<font size="5">zadanie Cebula cipher #4 (kategoria: crypto) (50p)</span>

Rozwiązało zadanie: 10
Spróbowało rozwiązać (wysłało flagę): 12
Ale nie podołało (wysłało tylko złe flagi): 2
Zignorowało zadanie: 114

solve_Cebulacipher4.png try_Cebulacipher4.png

Pierwsze rozwiązania:

  • @Xert rozwiązał zadanie w 2.35 godzin po rozpoczęciu
  • @tsugumo rozwiązał zadanie w 3.08 godzin po rozpoczęciu
  • @diamentowygimbus rozwiązał zadanie w 3.18 godzin po rozpoczęciu

<font size="5">zadanie Cebula cipher #5 (kategoria: crypto) (150p)</span>

Rozwiązało zadanie: 8
Spróbowało rozwiązać (wysłało flagę): 14
Ale nie podołało (wysłało tylko złe flagi): 6
Zignorowało zadanie: 112

solve_Cebulacipher5.png try_Cebulacipher5.png

Pierwsze rozwiązania:

  • @Xert rozwiązał zadanie w 2.4 godzin po rozpoczęciu
  • @tsugumo rozwiązał zadanie w 2.93 godzin po rozpoczęciu
  • @diamentowygimbus rozwiązał zadanie w 3.19 godzin po rozpoczęciu

<font size="5">zadanie easymode (kategoria: re) (200p)</span>

Rozwiązało zadanie: 56
Spróbowało rozwiązać (wysłało flagę): 56
Ale nie podołało (wysłało tylko złe flagi): 0
Zignorowało zadanie: 70

solve_easymode.png try_easymode.png

Pierwsze rozwiązania:

  • @Xert rozwiązał zadanie w 0.07 godzin po rozpoczęciu
  • @Mikan rozwiązał zadanie w 0.1 godzin po rozpoczęciu
  • @karol.pysklo rozwiązał zadanie w 0.24 godzin po rozpoczęciu

<font size="5">zadanie Księżniczka Lea (kategoria: web) (400p)</span>

Rozwiązało zadanie: 4
Spróbowało rozwiązać (wysłało flagę): 6
Ale nie podołało (wysłało tylko złe flagi): 2
Zignorowało zadanie: 120

solve_KsiniczkaLea.png try_KsiniczkaLea.png

Pierwsze rozwiązania:

  • @Gynvael Coldwind rozwiązał zadanie w 20.75 godzin po rozpoczęciu
  • @alamapsa rozwiązał zadanie w 24.63 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 31.41 godzin po rozpoczęciu

<font size="5">zadanie D0 Y0u 3v3n PHP? #2 (kategoria: web) (300p)</span>

Rozwiązało zadanie: 26
Spróbowało rozwiązać (wysłało flagę): 31
Ale nie podołało (wysłało tylko złe flagi): 5
Zignorowało zadanie: 95

solve_D0Y0u3v3nPHP2.png try_D0Y0u3v3nPHP2.png

Pierwsze rozwiązania:

  • @alamapsa rozwiązał zadanie w 0.28 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 0.78 godzin po rozpoczęciu
  • @irix rozwiązał zadanie w 1.87 godzin po rozpoczęciu

<font size="5">zadanie D0 Y0u 3v3n PHP? #1 (kategoria: web) (100p)</span>

Rozwiązało zadanie: 36
Spróbowało rozwiązać (wysłało flagę): 40
Ale nie podołało (wysłało tylko złe flagi): 4
Zignorowało zadanie: 86

solve_D0Y0u3v3nPHP1.png try_D0Y0u3v3nPHP1.png

Pierwsze rozwiązania:

  • @alamapsa rozwiązał zadanie w 0.26 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 0.79 godzin po rozpoczęciu
  • @reptile333 rozwiązał zadanie w 0.99 godzin po rozpoczęciu

<font size="5">zadanie Hasło Shaloma (kategoria: forensics) (300p)</span>

Rozwiązało zadanie: 10
Spróbowało rozwiązać (wysłało flagę): 29
Ale nie podołało (wysłało tylko złe flagi): 19
Zignorowało zadanie: 97

solve_HasoShaloma.png try_HasoShaloma.png

Pierwsze rozwiązania:

  • @stryku rozwiązał zadanie w 4.21 godzin po rozpoczęciu
  • @irix rozwiązał zadanie w 4.59 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 5.0 godzin po rozpoczęciu

<font size="5">zadanie 42 (kategoria: web) (100p)</span>

Rozwiązało zadanie: 36
Spróbowało rozwiązać (wysłało flagę): 52
Ale nie podołało (wysłało tylko złe flagi): 16
Zignorowało zadanie: 74

solve_42.png try_42.png

Pierwsze rozwiązania:

  • @alamapsa rozwiązał zadanie w 0.3 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 1.0 godzin po rozpoczęciu
  • @artur_waw rozwiązał zadanie w 1.07 godzin po rozpoczęciu

<font size="5">zadanie Do they speak English in "what"? (kategoria: misc) (400p)</span>

Rozwiązało zadanie: 14
Spróbowało rozwiązać (wysłało flagę): 17
Ale nie podołało (wysłało tylko złe flagi): 3
Zignorowało zadanie: 109

solve_DotheyspeakEnglishinwhat.png try_DotheyspeakEnglishinwhat.png

Pierwsze rozwiązania:

  • @reptile333 rozwiązał zadanie w 5.18 godzin po rozpoczęciu
  • @LKS rozwiązał zadanie w 8.37 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 12.32 godzin po rozpoczęciu

<font size="5">zadanie Do you even captcha? (kategoria: misc) (300p)</span>

Rozwiązało zadanie: 14
Spróbowało rozwiązać (wysłało flagę): 14
Ale nie podołało (wysłało tylko złe flagi): 0
Zignorowało zadanie: 112

solve_Doyouevencaptcha.png try_Doyouevencaptcha.png

Pierwsze rozwiązania:

  • @Lord Darkstorm rozwiązał zadanie w 4.62 godzin po rozpoczęciu
  • @LKS rozwiązał zadanie w 7.1 godzin po rozpoczęciu
  • @Marszal rozwiązał zadanie w 17.39 godzin po rozpoczęciu

<font size="5">zadanie English, do you speak it? (kategoria: misc) (200p)</span>

Rozwiązało zadanie: 19
Spróbowało rozwiązać (wysłało flagę): 43
Ale nie podołało (wysłało tylko złe flagi): 24
Zignorowało zadanie: 83

solve_Englishdoyouspeakit.png try_Englishdoyouspeakit.png

Pierwsze rozwiązania:

  • @Hummin rozwiązał zadanie w 3.63 godzin po rozpoczęciu
  • @reptile333 rozwiązał zadanie w 4.15 godzin po rozpoczęciu
  • @LKS rozwiązał zadanie w 4.38 godzin po rozpoczęciu

<font size="5">zadanie C3ntrum N$A (kategoria: web) (100p)</span>

Rozwiązało zadanie: 35
Spróbowało rozwiązać (wysłało flagę): 42
Ale nie podołało (wysłało tylko złe flagi): 7
Zignorowało zadanie: 84

solve_C3ntrumNA.png try_C3ntrumNA.png

Pierwsze rozwiązania:

  • @artur_waw rozwiązał zadanie w 0.08 godzin po rozpoczęciu
  • @alamapsa rozwiązał zadanie w 0.26 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 0.81 godzin po rozpoczęciu

<font size="5">zadanie Impossibru captcha (kategoria: misc) (200p)</span>

Rozwiązało zadanie: 5
Spróbowało rozwiązać (wysłało flagę): 5
Ale nie podołało (wysłało tylko złe flagi): 0
Zignorowało zadanie: 121

solve_Impossibrucaptcha.png try_Impossibrucaptcha.png

Pierwsze rozwiązania:

  • @Lord Darkstorm rozwiązał zadanie w 4.96 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 21.31 godzin po rozpoczęciu
  • @Marszal rozwiązał zadanie w 24.86 godzin po rozpoczęciu

<font size="5">zadanie Koty MSMa (kategoria: web) (200p)</span>

Rozwiązało zadanie: 33
Spróbowało rozwiązać (wysłało flagę): 42
Ale nie podołało (wysłało tylko złe flagi): 9
Zignorowało zadanie: 84

solve_KotyMSMa.png try_KotyMSMa.png

Pierwsze rozwiązania:

  • @alamapsa rozwiązał zadanie w 0.29 godzin po rozpoczęciu
  • @karolinaa rozwiązał zadanie w 0.36 godzin po rozpoczęciu
  • @Hummin rozwiązał zadanie w 0.97 godzin po rozpoczęciu

<font size="5">zadanie piet (kategoria: misc) (200p)</span>

Rozwiązało zadanie: 5
Spróbowało rozwiązać (wysłało flagę): 7
Ale nie podołało (wysłało tylko złe flagi): 2
Zignorowało zadanie: 119

solve_piet.png try_piet.png

Pierwsze rozwiązania:

  • @WhiteLightning rozwiązał zadanie w 6.64 godzin po rozpoczęciu
  • @Hummin rozwiązał zadanie w 7.35 godzin po rozpoczęciu
  • @karol.pysklo rozwiązał zadanie w 7.84 godzin po rozpoczęciu

<font size="5">zadanie Where is my password?! #2 (kategoria: crypto) (400p)</span>

Rozwiązało zadanie: 1
Spróbowało rozwiązać (wysłało flagę): 3
Ale nie podołało (wysłało tylko złe flagi): 2
Zignorowało zadanie: 123

solve_Whereismypassword2.png try_Whereismypassword2.png

Pierwsze rozwiązania:

  • @notaras rozwiązał zadanie w 28.37 godzin po rozpoczęciu

<font size="5">zadanie Where is my password?! #1 (kategoria: crypto) (200p)</span>

Rozwiązało zadanie: 14
Spróbowało rozwiązać (wysłało flagę): 17
Ale nie podołało (wysłało tylko złe flagi): 3
Zignorowało zadanie: 109

solve_Whereismypassword1.png try_Whereismypassword1.png

Pierwsze rozwiązania:

  • @superhero01 rozwiązał zadanie w 18.7 godzin po rozpoczęciu
  • @diamentowygimbus rozwiązał zadanie w 19.01 godzin po rozpoczęciu
  • @Swr rozwiązał zadanie w 19.11 godzin po rozpoczęciu

<font size="5">zadanie Obfuscated (kategoria: web) (100p)</span>

Rozwiązało zadanie: 19
Spróbowało rozwiązać (wysłało flagę): 21
Ale nie podołało (wysłało tylko złe flagi): 2
Zignorowało zadanie: 105

solve_Obfuscated.png try_Obfuscated.png

Pierwsze rozwiązania:

  • @akrasuski1 rozwiązał zadanie w 28.65 godzin po rozpoczęciu
  • @Hummin rozwiązał zadanie w 28.86 godzin po rozpoczęciu
  • @Henryhenry rozwiązał zadanie w 29.32 godzin po rozpoczęciu

<font size="5">zadanie SS-93 #1 (kategoria: stegano) (50p)</span>

Rozwiązało zadanie: 39
Spróbowało rozwiązać (wysłało flagę): 45
Ale nie podołało (wysłało tylko złe flagi): 6
Zignorowało zadanie: 81

solve_SS931.png try_SS931.png

Pierwsze rozwiązania:

  • @DibbyDum rozwiązał zadanie w 0.18 godzin po rozpoczęciu
  • @Hummin rozwiązał zadanie w 0.35 godzin po rozpoczęciu
  • @alamapsa rozwiązał zadanie w 1.19 godzin po rozpoczęciu

<font size="5">zadanie SS-93 #2 (kategoria: stegano) (200p)</span>

Rozwiązało zadanie: 9
Spróbowało rozwiązać (wysłało flagę): 16
Ale nie podołało (wysłało tylko złe flagi): 7
Zignorowało zadanie: 110

solve_SS932.png try_SS932.png

Pierwsze rozwiązania:

  • @tsugumo rozwiązał zadanie w 2.06 godzin po rozpoczęciu
  • @superhero01 rozwiązał zadanie w 2.88 godzin po rozpoczęciu
  • @karol.pysklo rozwiązał zadanie w 6.7 godzin po rozpoczęciu

<font size="5">zadanie xorme (kategoria: re) (400p)</span>

Rozwiązało zadanie: 14
Spróbowało rozwiązać (wysłało flagę): 18
Ale nie podołało (wysłało tylko złe flagi): 4
Zignorowało zadanie: 108

solve_xorme.png try_xorme.png

Pierwsze rozwiązania:

  • @Proxima rozwiązał zadanie w 2.22 godzin po rozpoczęciu
  • @superhero01 rozwiązał zadanie w 2.54 godzin po rozpoczęciu
  • @karol.pysklo rozwiązał zadanie w 2.66 godzin po rozpoczęciu

<font size="5">zadanie Colourblind madness (kategoria: misc) (100p)</span>

Rozwiązało zadanie: 7
Spróbowało rozwiązać (wysłało flagę): 7
Ale nie podołało (wysłało tylko złe flagi): 0
Zignorowało zadanie: 119

solve_Colourblindmadness.png try_Colourblindmadness.png

Pierwsze rozwiązania:

  • @Lord Darkstorm rozwiązał zadanie w 3.3 godzin po rozpoczęciu
  • @LKS rozwiązał zadanie w 16.52 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 19.12 godzin po rozpoczęciu

<font size="5">zadanie Capture The Data #2 (kategoria: forensics) (300p)</span>

Rozwiązało zadanie: 12
Spróbowało rozwiązać (wysłało flagę): 25
Ale nie podołało (wysłało tylko złe flagi): 13
Zignorowało zadanie: 101

solve_CaptureTheData2.png try_CaptureTheData2.png

Pierwsze rozwiązania:

  • @tsugumo rozwiązał zadanie w 3.31 godzin po rozpoczęciu
  • @symoneo rozwiązał zadanie w 5.16 godzin po rozpoczęciu
  • @superhero01 rozwiązał zadanie w 7.58 godzin po rozpoczęciu

<font size="5">zadanie Capture The Data #1 (kategoria: forensics) (100p)</span>

Rozwiązało zadanie: 41
Spróbowało rozwiązać (wysłało flagę): 45
Ale nie podołało (wysłało tylko złe flagi): 4
Zignorowało zadanie: 81

solve_CaptureTheData1.png try_CaptureTheData1.png

Pierwsze rozwiązania:

  • @karolinaa rozwiązał zadanie w 0.88 godzin po rozpoczęciu
  • @Hummin rozwiązał zadanie w 1.02 godzin po rozpoczęciu
  • @big_y rozwiązał zadanie w 1.09 godzin po rozpoczęciu

<font size="5">zadanie Intro (kategoria: !intro) (10p)</span>

Rozwiązało zadanie: 114
Spróbowało rozwiązać (wysłało flagę): 122
Ale nie podołało (wysłało tylko złe flagi): 8
Zignorowało zadanie: 4

solve_Intro.png try_Intro.png

Pierwsze rozwiązania:

  • @Hummin rozwiązał zadanie w 0.02 godzin po rozpoczęciu
  • @Xert rozwiązał zadanie w 0.02 godzin po rozpoczęciu
  • @lysy rozwiązał zadanie w 0.04 godzin po rozpoczęciu

<font size="5">zadanie Kapitan Rozdil (kategoria: stegano) (225p)</span>

Rozwiązało zadanie: 6
Spróbowało rozwiązać (wysłało flagę): 24
Ale nie podołało (wysłało tylko złe flagi): 18
Zignorowało zadanie: 102

solve_KapitanRozdil.png try_KapitanRozdil.png

Pierwsze rozwiązania:

  • @tsugumo rozwiązał zadanie w 8.46 godzin po rozpoczęciu
  • @diamentowygimbus rozwiązał zadanie w 20.34 godzin po rozpoczęciu
  • @szymski rozwiązał zadanie w 21.28 godzin po rozpoczęciu

<font size="5">zadanie Rémy Suárez Ascánder (kategoria: crypto) (400p)</span>

Rozwiązało zadanie: 1
Spróbowało rozwiązać (wysłało flagę): 6
Ale nie podołało (wysłało tylko złe flagi): 5
Zignorowało zadanie: 120

solve_RmySurezAscnder.png try_RmySurezAscnder.png

Pierwsze rozwiązania:

  • @katelx rozwiązał zadanie w 40.5 godzin po rozpoczęciu

<font size="5">Zakończenie</span>

To chyba tyle - dzieki jeszcze raz za uczestnictwo i do zobaczenia (może) na przyszłych CTFach.

PS. Jak znudzi mi się programowanie to zostanę pisarzem.

PPS. Ale jednak chociaż trochę programistą jestem, bo cały ten post został wygenerowany przez skrypt:
http://4programmers.net/Pastebin/4612
Technologia = sqlite do wyciągania danych, matplotlib do wykresów (chociaż go nie lubię), oraz jinja2 do templatowania tekstu

6

Krótkie ustosunkowanie się do przesłanych ankiet:

Jak oceniliście konkurs:
ankieta2.PNG

Cieszy nas bardzo że większość z ankietowanych oceniło nas dobrze oraz bardzo dobrze :)

Czego chcielibyście więcej:
ankieta1.PNG

Cieszy fakt, że każda kategoria dostała przynajmniej kilka głosów. To znaczy, że każdy mógł znaleźć coś dla siebie.
Widać, że mamy tu dość silną reprezentacje osób które zajmują się technologiami Web, bo zadań w tej kategorii było bardzo dużo a mimo to chcielibyście jeszcze więcej.
Cieszy fakt, ze zadania Stegno wam się podobały. Nie jest to sytuacja często spotykana - zwykle na CTFach te zadania dostają falę hejtu, bo wymagają za dużo zgadywania a za mało umiejętności.
Mała liczba zadań RE (oraz brak zadań z kategorii PWN - binary exploitation) wynikała głównie z tego, że nie wiedzieliśmy kto będzie startował i w związku z tym jakiego typu zadania będą dla was ciekawe. Analogiczny problem był też z poziomem trudności zadań - z jednej strony dobrze by było gdyby nie dało się wszystkiego rozwiązać w 5 minut, ale z drugiej strony wiemy jak frustrujące jest, kiedy wszystko jest za trudne i nie można poradzić sobie z żadnym zadaniem.
Dobrze wiedzieć, że są osoby zainteresowane zadaniami na "niskim poziomie", którym nie straszny debugger i deasembler.

Które zadania się wam nie podobały i dlaczego:

Księżniczka Lea - chyba znalazłem w nim błąd

Należało go nam zgłosić i coś byśmy zaradzili :) Jest to częsta sytuacja na CTFach, że jakieś zadanie można rozwiązać inaczej niż zakładali jego twórcy. Trudno tego uniknąć, ale zawsze można o tym poinformować zyskując przy tym jakieś dodatkowe punkty ;)

te z tymi kodami i szyframi. kompletnie nie wiem jak do tego się zabrać i co trzeba umieć.
Cebula cipher, ot takie kombinowanie, może po prostu nie wiedziałem jak to dalej gryźć
Te z tymi szyframi.
crypto były albo za proste, albo trochę za wymagające

Szkoda że crypto wam się nie podobało, może dlatego, że mało kto ma z tym styczność a do zrobienia RSA czy AESa trzeba było jednak trochę doczytać. Do czego zresztą zachęcamy, bo zarówno RSA jak i AES są powszechnie stosowane i warto rozumieć kiedy są bezpieczne, a kiedy nie za bardzo ;)
Jeśli chodzi o cebulę to staraliśmy się tak dobierać szyfry, żeby to były bardziej kodowania, a nie szyfry. Koniec końców wiele osób zrobiło zadanie z Cebulą więc chyba nie było takie straszne. Szczególnie, że dawaliśmy punkty za każdy poziom - w trakcie zwykłego CTFa flaga byłaby dopiero na samym końcu. A tak chcieliśmy was dodatkowo zmotywować.

Do you even Captcha. Dlatego że miałem je zrobione w 90% tylko serwer nie akceptował odpowiedzi (to pewnie moja wina, ciasteczka albo coś).
Przepisywanie captcha i pomyłka w 198/200 kodzie :D
CAPTHA, bo to masakra gdy trzeba patrzeć ~30minut, czy zautomatyzowany OCR dobrze rozwiązuje i przy 170 razie, gdy oczy bolą i już nie zwraca się tak bardzo uwagi ten popełnia błąd wstawiając 'V' zamiast 'W', albo coś w tym stylu.
zablokujcie nast. razem reczne wpisywanie captcha

Zadania działały więc jeśli ktoś miał problem z wysłaniem rozwiązania na serwer to znaczy że problem leżał po jego stronie :)
Przepisywania ręcznie nie będziemy komentować - można było to zadanie zrobić automatem więc sam sobie jesteś winien.
Jeśli chodzi o mylący się solver jedyne co można zasugerować to: trzeba było zrobić lepszy solver! :)
Jeśli chodzi o blokadę pisania ręcznego to nie bardzo jest jak to zrealizowac. Można było dać więcej kodów np. 1000 zamiast 200, ale wtedy nawet automatyczny solver mieliłby to bardzo długo i baliśmy się że ktoś może po prostu zwyczajnie nie zdążyć mimo, że przygotuje poprawne rozwiązanie.
Osoby które napisały automatyczne solvery raczej chwaliły te zadania bo pozwoliły nauczyć się obsługi tesseracta. Warto generalnie myśleć o zadaniach w kontekście tego czego się można nauczyć, a nie tylko "jak zdobyć te kilka punktów".

w sumie ciezko powiedziec, mysle ze zadania z plikami ktore wystarczy jedynie otworzyc w notatniku i zrobic ctrl+f zeby znalezc flage sa troche za latwe
easymode i SS93#1, bo starczy strings xxx
otworz plik i ctrl+f/grep p4

Chcieliśmy żeby było trochę łatwych zadań, ale może faktycznie kilka zadań do rozwalenia notatnikiem to przesada. No i faktem jest, że nie zauważyliśmy, że niektóre zadania można tak prosto rozwiązać :) Zadanie z pcapem większość z nas od razu załadowała do wiresharka i flagę/hasło zauważyła już przy analizie pakietów. Analogicznie z easy re, część z nas nawet nie próbowała tego przeglądać hexedytorem tylko od razu załadowała do deasemblera / debugera.

xorme- za duży przeskok trudności między easymode a xorme;

Jest bardzo niewiele miejsca na zadania “pomiędzy”, bo xorme było nadal bardzo łatwe. Chętnie posłuchamy propozycji zadań trudniejszych od easymode a łatwiejszych od xorme :) Bo oba te zadania opierały się o proste porównanie wpisanej flagi z tą zapisaną w pamięci programu.

exe bo m$ (chyba ze jest jakies rozwiazanie bez uruchamiania windowsa),

Można było to zadanie rozwiązać za pomocą statycznej analizy kodu, bez konieczności uruchamiania go, ale faktycznie można by pomyśleć o udostępnianiu paczki pod różne systemy.

English, do you speak it? & Do they speak English in "what"?
Misc, jakoś tak.

Chcieliśmy żeby każdy znalazł coś dla siebie a zadania Misc były przygotowane pod programistów, niemniej rozumiemy że nie każdemu mogły podejść.
Cieszy jednak fakt, że wiele osób chwaliło te zadania w swoich ankietach, więc znalazły one swoich odbiorców.

piet

Na ctfach nie zawsze mamy wybór w jakim jezyku programujemy. Czasami zdarzją sie code golfy w php, perlu czy rubym. Nikt nie pyta nas czy kiedykolwiek programowalismy w tym jezyku, trzeba się szybko dostosować i osiągnąć niesamowicie krótki kod. Odpowiedzią na zarzuty ludzi, że niektórzy maja fory, bo wczesniej używali danego jezyka są języki ezoteryczne. Nikt ich nie używa i są mniej wiecej równe szanse. Każdy uczy się ich na bieżąco. Zdarzyło się nawet zadanie w jezyku stworzonym przez organizatorów, który nie był nigdzie udokumentowany a dostawaliśmy tylko jego interpreter również w nienajcześciej używanym języku. Takie zadania są rozwijające.

Problemy techniczne w zadaniach:

W Haśle Shaloma - podwójne myślniki dużo myliły.

W rzeczywistości nie były to podwójne myślniki tylko znaki z klawiszem shift, ale uznaliśmy że może to być troche zbyt skomplikowane stąd też ułatwiliśmy trochę zadanie podając wyrażenie regularne oraz informacje o tym z jakiego zakresu są znaki.

W drugim zadaniu językowym - nie byłem pewien, czy dobrze skróty rozszyfrowałem przez jakiś czas.

To była część zadania więc trudno zaliczyć to jako “problem z zadaniem”. Dodatkowo skróty były standardową klasyfikacją ISO języków. Poza tym niektóre osoby poradziły sobie i bez rozszyfrowania, używając serwera jako źródła danych w danym języku. Nastepnym razem ‘’try harder’’ ;)

Czasem padał serwer (rozpoznawanie języka) ale bardzo szybko przywracaliście go do życia.
English. do you speak it? - odniosłem wrażenie, że w sobotę był problem z podpięciem się
Chwilowy brak dostępu przy rozwiązywaniu captcha i 'do u speak it', ale bardzo szybko to naprawiono

Niestety to prawda, że chyba 2 albo 3 razy z niewyjaśnionych przyczyn padły zadania z rozpoznawaniem języka. Możliwe że był to jakiś problem z przeciążeniem serwera - może ktoś podpiął dziesiątki solverów na raz? Niemniej w zasadzie przez całe 48h non-stop ktoś był dostępny na kanale IRC więc jak tylko pojawiła się informacja, że coś przestało działać zaraz było przywracane do życia.
Na przyszłość będziemy myśleć o jakimś load balancingu dla tego typu zadań.

Polecenia mogłyby być napisane jaśniej.

Staraliśmy się żeby polecenia były jasne a jednocześnie nie zdradzały za dużo w danym zadaniu. Jednocześnie monitorowaliśmy postępy użytkowników i staraliśmy się reagować robiąc update dla niektórych zadań oraz podając informacje na IRCu. Dotyczy to szczególnie problemów z formatem flag, kiedy widzieliśmy że ktoś zdobył flagę a ma problem z jej wysłaniem :)
Dodatkowo w zasadzie przez całe 48h non-stop ktoś był dostępny na kanale IRC więc można było pytać i wyjaśniać wszelkie wątpliwości.

1

Nie jest to sytuacja często spotykana - zwykle na CTFach te zadania dostają falę hejtu, bo wymagają za dużo zgadywania a za mało umiejętności.

To chyba nie nasze stegano! :P

Księżniczka Lea - chyba znalazłem w nim błąd

Wątpliwe skoro kilka osób zrobiło - ale tak jak shalom pisze, najlepiej takie rzeczy zgłaszać.

Zadanie z pcapem większość z nas od razu załadowała do wiresharka i flagę/hasło zauważyła już przy analizie pakietów

To Chyba Ty. :P. Chociaż przy easyre liczyłem że ktoś chociaż załaduje do IDY (nie byłoby dłużej niż hexedytorem).

xorme- za duży przeskok trudności między easymode a xorme;

...a xorme to dosłownie najprostsze zadanie RE (jakie byłem w stanie wymyślić) którego nie da się rozwiązać notatnikiem ;).

0

Brawa za organizację. Ja niestety dopiero we wtorek dorwałem się do kompa by zobaczyć, że już po ptakach. Klikam sobie część zadań nadal, bez zaglądania póki co w rozwiązania (bo to przecież byłoby bez sensu). Kilka od razu odpuszczam z braku czasu i wyzwania pokonkursowego (np. re, misc). Została mi w sumie kategoria web, za to najdłużej męczyłem chyba Rozdila, ale pora uznać porażkę ;) Tak samo niestety, jak z Cebulą #3 - nijak nie wbiłem się w tok rozumowania autora.

Jedna uwaga, to byłoby fajnie, gdyby strona główna oznaczała wykonane przez nas zadania, choćby inny kolor boxa.

No i pewien zaskakujący 3 literowy nick wśród zawodników :)

0

Taki CTF to świetna okazja do rekrutacji nowych członków :D Takimi statystykami też się podzielcie ilu nowych zrekrutowaliście :D

0

BTW, jest szansa, że zadania trochę powiszą? Wiadomo, teraz Święta, Sylwki i te sprawy i z czasem słabo, a w paru chciałbym sobie jeszcze powalczyć zanim kliknę w wątek writeupowy :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1