Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

CTF 03.2018 sekcji projektowanie i tworzenie - portal

And! 10 Mar 2018 23:02 2712 9
  • #1 10 Mar 2018 23:02
    And!
    Admin grupy Projektowanie

    Poprzedni CTF 02.2018 miał silny związek ze sprzętem. CTF 03.2018 odnosi się do steganografii. Różnie bywa z popularnością tej kategorii, gdyż czasami do zdobycia flagi wystarczy użyć "dekodera"i jest zbyt prosto, a w innych trzeba długo szukać "co autor miał na myśli" i jest zbyt trudno. Mam nadzieję, że uda się nieco odczarować kategorię stegano i w CTF znajdziecie coś intrygującego, zobaczymy. Jeżeli będziecie potrzebowali konkretnych podpowiedzi napiszcie o tym w temacie. Możecie też na bieżąco opisywać swoje osiągnięcia (nie zdradzając szczegółów). W tym CTF znajomość elektroda.pl może ułatwić zdobycie flagi. Czas zabawy do 10.04.2018 i jeżeli nie pojawi się prawidłowa odpowiedź to umieszczę rozwiązanie.

    W CTF ukryta jest jedna flaga i pierwsza osoba, która umieści w temacie post z prawidłową flagą otrzyma niespodziankę od gulson,
    internetowy przekaźnik IoT WiFi Sonoff.
    CTF 03.2018 sekcji projektowanie i tworzenie - portal

    Ponieważ flaga jest jedna i moduł też 1 szt. to będzie jeden wygrany, liczy się szybkość i warto umieścić post w temacie z odkrytą flagą jak najszybciej, liczy się data umieszczenia postu, edytowane posty będą traktowane jako umieszczone z datą ostatniej edycji.

    Zależy mi na tym aby osoba która umieści flagę, później na spokojnie w kolejnym poście opisała jak udało się dotrzeć do ukrytej flagi,
    jakie były trudności, co było ciekawe co można ulepszyć. W materiale poza opisem można umieścić zrzuty ekranu, kody i inne materiały.

    Flaga jest ciągiem znaków w formacie: CTF_{tutajTrescFlagi} czyli przykładowa flaga mogłaby wyglądać tak:
    CTF_{elektroda.pl}

    W wielu zabawach CTF można wprowadzić flagę do formularza online i sprawdzić czy jest prawidłowa,
    w naszym CTF gdy znajdziecie flagę należy napisać post w tym temacie z treścią flagi oraz w kolejnym poście na spokojnie opisać jak flaga została zdobyta, odpowiem i potwierdzę czy zgłoszona flaga jest prawidłowa czy też nie.

    Zgłaszając flagę koniecznie zachowajcie wielkość liter.
    Gdy będziecie umieszczać post z flagą warto dodać @And! w treści postu, dostanę wtedy powiadomienie abym nie przegapił zgłoszenia i odpowiem czy flaga jest prawidłowa.

    Dokąd poprowadzi tytułowy portal?

    Zapraszam do zabawy, poniżej treść CTF prowadząca do ukrytej flagi:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal

    --edit 10.03.2018 jeszcze była drobna korekta grafiki w poście, także jak ktoś już pobrał to można to wykonać jeszcze raz.

  • #2 15 Mar 2018 21:28
    And!
    Admin grupy Projektowanie

    Podejrzanie długo ten CTF "wytrzymuje", myślałem że nie jest zanadto skomplikowany, a może formuła CTF się wyczerpała i Wam znudziła?
    Pomyślałem, że mogłem też popełnić błąd i np. nie da się przejść jakiegoś etapu.

    Jeżeli bierzecie udział to napiszcie do którego etapu udało się dotrzeć.

    Dodam jeszcze że jeżeli traficie np. na coś co trzeba np. bruteforcować to zgodnie z duchem CTF jest to tylko symboliczne i powinno zając max. 1-10min, jeżeli jest inaczej to jest to zła droga.

  • #4 17 Mar 2018 10:00
    And!
    Admin grupy Projektowanie

    Minął tydzień więc jest dobry czas na podpowiedź :)
    1. CTF ma wiele wspólnego z elektroda.pl
    2. jest to CTF wieloetapowy
    3. to pierwszy etap https://obrazki.elektroda.pl/1438614000_1520717319.png
    4. 01.01.1970 00:00

    Gdzie prowadzi portal?

    @Sam Sung jeżeli z pierwszego etapu wyciągnąłeś dane to do przeskoczenia na następny etap praktycznie wystarczy ołówek i kartka ;)

  • #5 17 Mar 2018 21:24
    akrasuski1
    Poziom 7  

    Póki co jestem na "pasiaku".

  • #6 17 Mar 2018 23:54
    And!
    Admin grupy Projektowanie

    Nieźle, pasiak to etap 3/7, pasiak jest jednocześnie łatwy i trudny, trochę podstępny.
    W sumie jest to bardzo popularne 'coś' ale tutaj użyte nieco w innym wymiarze.
    Prostsza odmiana tego sposobu ukrywania informacji była już wykorzystana w CTFach z tego cyklu na elektroda.pl

    Nie przejmujcie się ilością kroków niektóre są banalnie proste (szczególnie dwa ostanie to właściwie formalność i wykorzystanie poprzednich kroków), generalnie są zróżnicowane więc dla jednej osoby jeden krok będzie prosty a dla innej trudny. Osoby znające elektroda.pl mają łatwiej ;)

  • #7 18 Mar 2018 16:09
    willyvmm
    Poziom 26  

    Pasiak to "animacja" ?

  • #9 18 Mar 2018 18:39
    akrasuski1
    Poziom 7  

    No i poszło - CTF_{Move37}
    Dodano po 29 [minuty]:
    No więc po kolei.
    Etap 1/7:
    Pobieramy obrazek portalu, i biorąc pod uwagę że to kategoria "stegano", patrzymy na najpopularniejszą technikę steganograficzną - to jest ukrywanie informacji w LSB, czyli najmłodszych bitach obrazka. Po wykonaniu "pixel = (pixel & 1) * 255" na każdym pikselu tegoż, dostajemy następujący obrazek:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal
    Tutaj spędzamy dłuższą chwilę czasu deliberując czemu są litery, data, i litery. Ostatecznie konwertujemy czas do timestampa unixowego (w czasie polskim) i wychodzi nam 1520712929. Całkiem śmieszna liczba, ostatnie dwie cyfry są takie same jak dwie przed nimi: 2929. Dokładnie jak w drugim słowie z pierwszej linijki: EDGBAEGFGF. Po sprawdzeniu, wychodzi że każda litera odpowiada jednej cyfrze - nie ma żadnych konfliktów. Na kartce rozpisujemy: A=7, B=0, D=5, E=1, F=9, G=2 i podstawiamy pod litery z obrazka: w górnej linii dostaniemy 70C519C000 (C nie znamy jeszcze), a w dolnej - 71 105 102. Dolne liczby można rozpoznać jako kody ASCII - wychodzi po odkodowaniu "Gif". Spójrzmy na link do oryginalnego obrazka:
    https://obrazki.elektroda.pl/1438614000_1520717319.png
    Widzimy że URL składa się, poza stałą częścią, z dwóch liczb (id oraz timestampa) i rozszerzenia. Załóżmy że to co do teraz odkodowaliśmy to link do następnego etapu. Nie mamy co prawda litery "C", ale to żaden problem - wybrutujemy te dziesięć (można i mniej) możliwości:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Przy i=8, dostajemy poprawny obrazek:
    https://obrazki.elektroda.pl/7085198000_1520712929.gif

    Etap 2/7:
    Animacja składa się z trzech klatek, z których każda ma 16x26 kwadratów - nazwijmy to "pikselami". Ciekawym faktem jest że lewa kolumna nie mryga - mi to od razu podsunęło pomysł że może to kodowanie w rodzaju ASCII, gdzie najstarszy bit jest niewykorzystany. Przy dokładniejszej obserwacji widzimy że kolumna o 8 w prawo, na środku obrazka, również jest stała. Czyli mamy faktycznie jakieś 8-bitowe bajty.
    Napisałem krótki kod, który wyciąga dane:
    https://gist.github.com/akrasuski1/1e3e04ed43a0972abae4a9d9988e6ffd




    Wynik to:
    Cytat:
    [102, 105, 114, 115, 116, 32, 32, 102, 114, 97, 109, 101, 23, 99, 93, 42, 164, 85, 111, 249, 175, 239, 51, 239, 221, 242, 12, 19, 144, 0, 144, 134, 131, 223, 89, 217, 163, 89, 76, 105, 101, 39, 3, 79, 27, 29, 162, 187, 199, 221, 142, 127]
    [102, 114, 97, 109, 101, 32, 50, 32, 111, 102, 32, 50, 22, 54, 13, 40, 162, 3, 110, 167, 166, 185, 59, 188, 215, 167, 7, 30, 196, 94, 151, 220, 215, 140, 84, 211, 160, 91, 30, 102, 53, 32, 85, 76, 77, 76, 173, 226, 205, 222, 220, 47]
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 5, 108, 78, 146, 52, 94, 159, 150, 138, 3, 138, 228, 194, 52, 39, 242, 56, 164, 190, 224, 185, 108, 224, 144, 106, 40, 94, 4, 18, 48, 120, 125, 123, 155, 218, 254, 234, 237, 25]

    Pierwsze bajty są dość ciekawe - w pierwszych dwóch ciągach mniejsze od 128, a w trzecim zerowe. Po odkodowaniu ASCII pierwszych dwóch, dostajemy odpowiednio "first frame" i "frame 2 of 2", a następnie śmieci binarne.
    Ponieważ ostatni ciąg jest na tych pozycjach wyzerowany, nasuwa się na myśl, że może to być rodzaj klucza - i dlatego początek jest czytelny, a reszta nie. Wyxorujmy pierwszy z trzecim i drugi z trzecim:
    Kod: python
    Zaloguj się, aby zobaczyć kod

    Wynik to:
    Cytat:
    first frame4f1d6a1f9e0e9084b848cf5933d7a537ff9a97cf
    frame 2 of 253af070803863e396f3b7583016812e407683416

    No i mamy, po znanym już wcześniej prefiksie, po czterdzieści cyfr heksadecymalnych. Tyle samo ma SHA-1, i faktycznie, po wpisaniu do internetowych tablic tęczowych okazuje się że są to hashe odpowiednio "4923235800" i "1520534312".
    Mamy dwie liczby, więc robimy to samo co w poprzednim etapie - konstruujemy link do obrazka na elektrodzie:
    https://obrazki.elektroda.pl/4923235800_1520534312.png

    Etap 3/7:
    Obrazek, który wcześniej nazwałem "pasiakiem", właśnie tak wygląda - szereg ukośnych linii. Po paru próbach nakładania na siebie przesuniętych kopii obrazka, widzimy że jest on niemal całkiem powtarzalny - poza naprawdę niewielkimi różnicami w wartości pikseli. Ostatecznie, korzystając z podpowiedzi, przeglądamy stare CTF-y i przypominamy sobie że była kiedyś ukryta wiadomość w spektrogramie audio. Spektrogram to nic innego niż transformata Fouriera. Jest ona zdefiniowana także dla obrazów dwuwymiarowych - stwórzmy więc taką wizualizację:
    Kod: python
    Zaloguj się, aby zobaczyć kod

    Wynik:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal
    Można odczytać napis "?id=891063". Po krótkim szukaniu po elektrodzie, znajdujemy gdzie się używa takich linków - przy załącznikach. Link do następnego etapu to więc:
    https://www.elektroda.pl/rtvforum/download.php?id=891063

    Szczerze mówiąc, wpadłem już wcześniej na pomysł wykorzystania Fouriera do tego zadania, ale bez logarytmu w kodzie był on prawie cały jednakowego koloru. Starałem się wtedy wykasować "najgłośniejsze" częstotliwości, w nadziei że pozostały szum będzie zawierał sensowne dane. Po podpowiedzi wróciłem do oryginalnego pomysłu.

    Etap 4/7:
    Pobrany załącznik to obrazek o nazwie "box.jpg". Za bardzo go nawet nie zdążyłem przeanalizować, i już rozwiązałem - odpowiedź jest zapisana tekstem jawnym gdzieś w środku pliku (pewnie jakiś komentarz, czy coś):
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Znowu mamy dwie liczby, więc to link do obrazka:
    https://obrazki.elektroda.pl/4054496500_1519931768.png

    Etap 5/7:
    Jest to kod QR. Po wrzuceniu do jakiegoś dekodera dostajemy informację że w środku jest "The exit is here.". Mało przydatne. Obrazek jest dość duży, pewnie są więc gdzieś ukryte dane. Po dokładniejszej obserwacji w GIMP-ie widzimy że jeden z kwadratów nie jest jednolitego koloru, a zawiera ukryty mniejszy QR:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal
    Ten z kolei zawiera dane: "16791215#16791215". Wygląda to jak link do postu na elektrodzie - i faktycznie, to następny etap:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=16791215#16791215

    Etap 6/7:
    Post, który rozważamy był edytowany w okolicy startu CTF-a, więc jesteśmy na dobrym tropie. Po krótkim obejrzeniu wykresu tam załączonego i konkluzji że "nic tam nie ma", wracamy do samego postu. Podczas kopiowania treści do schowka, widzimy że pod spodem napisany był dodatkowy tekst:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal
    Ponownie są to dwie liczby z hashem, więc następny poziom to znowu post:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=16801652#16801652

    Etap 7/7:
    Znowu mamy niedawno edytowany post. Tym razem edycja jest dość jasna - dołożenie załącznika "F.zip". Archiwum to jest zahasłowane, ale na szczęście mamy widoczną listę plików:
    Cytat:
    F/46digits.txt
    F/first_numbers_from_pics_id.txt
    F/flag.jpg

    Sądząc po nazwach dwóch pierwszych plików, musimy złożyć hasło - 46-cyfrową liczbę - z identyfikatorów obrazków, które dotąd napotkaliśmy. Są to:
    Cytat:
    1438614000_1520717319 - portal
    7085198000_1520712929 - animacja
    4923235800_1520534312 - pasiak
    ?id=891063 - download box.jpg
    4054496500_1519931768 - qr

    Całe hasło to "1438614000708519800049232358008910634054496500". Po odpakowaniu zipa tymże hasłem, dostajemy "flag.jpg", w którym to znajduje się ostateczna flaga:
    CTF 03.2018 sekcji projektowanie i tworzenie - portal

  • #10 19 Mar 2018 19:40
    And!
    Admin grupy Projektowanie

    @akrasuski1 brawo! flaga prawidłowa, prośba o zgłoszenie się do gulson celem odbioru Sonoff.
    Bardzo dobry opis, dodam jeszcze od siebie że starałem się dobrać w większości takie metody, które da się przejść narzędziami online.
    Chodziło o to aby osoby mniej obeznane z programowaniem także mogły znaleźć flagę.

    W 1/7 można użyć:
    https://incoherency.co.uk/image-steganography/#unhide

    2/7 można przeanalizować na kartce, ale programowo łatwiej :)

    W 3/7 2Dfft online:
    https://www.ejectamenta.com/Fourifier-fullscreen/

    4/7 dane w exif i dopisane na końcu png (przeglądarki grafiki ignorują takie dopisane dane)

    5/7 wiadomo czytnik QR i trochę spostrzegawczości

    6,7/7 formalność

    Sens FFT jest dość intuicyjny, przy okazji zapytam czy znacie intuicyjne wyjaśnienie działania dwuwymiarowej FFT?