SITIS CTF: Wie ein Siegel zum Sieg des CTF beigetragen hat



    Am 27. Januar 2019 fand die SITIS CTF-Veranstaltung statt - ein Wettbewerb zur Informationssicherheit für Schüler und Studenten technischer Hochschulen. Das Turnier wurde von rund 80 jungen Profis und einem Siegel besucht. Das Spiel fand im Büro von Jet Infosystems statt, der Organisator der Aufgaben und der technischen Plattform war das junge Team von SITIS .


    CTF


    Das Ereignisformat ist eine aufgabenbasierte CTF (Gefährdung), in der die Spieler Aufgaben (Aufgaben) unterschiedlicher Komplexität lösen. Die Antwort kann ein Zeichensatz oder eine beliebige Phrase sein. Für jede richtige Antwort (Erfassung der Flagge) erhalten die Teilnehmer eine bestimmte Anzahl von Punkten. Der Zugriff auf einen Teil der Aufgabe wird erst nach der Entscheidung der vorherigen geöffnet.


    Die Teilnehmer des CTF-Spiels konnten fast alle Aufgaben lösen, aber zwei von ihnen sind nicht untergegangen: Sie waren höchstwahrscheinlich von Müdigkeit betroffen - die Hacker und Hacker brachen sich morgens bis abends das Gehirn und das Gehirn.


    Aufgaben


    PPC


    Kette (200 Punkte) Den
    Teilnehmern wurde ein Satz von Pixeln zur Verfügung gestellt, die speziell in ein Hex-Element übersetzt wurden, darunter eine Kette von Schlüsselpixeln. Wenn Sie ein Hex in ein Bild übersetzen, können Sie ein Bild mit einer Flagge erhalten.


    Malen (200 Punkte) Den
    Teilnehmern wurde ein Archiv zur Verfügung gestellt, das etwa 1600 monochrome Bilder mit 75-Byte-Zahlen enthielt. Um das Flag zu erhalten, müssen Sie die Zahlen in den Bildern mit Nullen als Trennzeichen hinzufügen und die resultierende Liste in eine Zeichenfolgendarstellung übersetzen.


    Kotorova (250 Punkte),
    siehe Abschnitt „Vraytaps“.


    Musik (300 Punkte)
    Siehe Abschnitt Vrytaps.


    REVERSE


    Razminka (75 Punkte) Die
    Teilnehmer benötigten erste Umkehrfähigkeiten , das Passwort wurde als Char-Variablen in der Hauptklasse gespeichert.


    Meine Schöpfung (250 Punkte)
    Siehe Abschnitt "Vrytaps".


    CRYPTO


    Merkwürdiger Traum (100 Punkte)
    Siehe den Abschnitt Vraytaps.


    Hmmmmmmm (150 Punkte)
    Siehe Abschnitt "Vraytaps".


    FREUDE


    und (25 Punkte) Die
    Teilnehmer mussten auf einem der Bilderrahmen des Gifs mit Katzen eine Flagge finden, die in kleinem Druck gedruckt ist.


    Schneeflocken (75 Punkte) Den
    Teilnehmern wurde eine HTML-Datei mit verdecktem Javascript-Code bereitgestellt. Es war notwendig, eine Flagge aus Zeichen zu setzen, die langsam auf die Seite fallen.


    Flagge unter uns (100 Punkte)
    Der Aufgabe wurde ein Bild beigefügt.





    Zunächst stürzten alle nach der Flagge im Bild. Nach dem Stöbern und der Sicherstellung, dass die Flagge nicht vorhanden ist, lohnt es sich, zur Beschreibung und zum Namen der Aufgabe zurückzukehren und sie erneut sorgfältig zu lesen. Tatsache ist, dass gerade beim Wettbewerb an den Türen der Räumlichkeiten, in denen die Veranstaltung stattfand, ungewöhnliche Aufkleber mit QR-Codes standen.





    Wenn Sie alle Teile einsammeln, erhalten Sie die Phrase HRGRH {9I3371M95_7i4e3o3i}. Hier wird offensichtlich eine Flagge verfolgt, die jedoch verschlüsselt ist. Ihnen wurden nicht so viele Punkte für die Aufgabe gegeben, daher wäre es logisch, dass die Chiffre nicht kompliziert sein sollte. Ein Blick auf die Hauptoptionen könnte zu der Schlussfolgerung führen, dass Atbash hier war. SITIS-Flag {9R3371N95_7r4v3l3r}.


    STEGO


    Fehler oder Funktion? (50 Punkte)
    Der Aufgabe wurde ein Textdokument beigefügt, in dem auf den ersten Blick nur zwei Zeilen vorhanden waren. Nach dem Durchsuchen und Hervorheben des Textes wurden jedoch in 39 Zeilen viele Leerzeichen und Registerkarten angezeigt. Diejenigen, die dies bereits erlebt haben, sollten es nicht schwer gemacht haben, die Flagge zu bekommen.


    Gedichte (75 Punkte) Den
    Teilnehmern wurde ein Bild aus dem Film „Imitation Game“ gegeben. Es war notwendig, das Originalbild zu finden und zu vergleichen und aus den verschiedenen Pixeln ein neues Bild mit Byrons Gedichten zu erstellen, dessen Nachname die Flagge war.


    GESCHICHTE


    Willkommen (50 Punkte)
    Droids sind überall (100 Punkte)
    Es ist Zeit zu lüften (105 Punkte)
    Es gibt keine Hilfe (125 Punkte)
    Spielen Sie das Spiel mit gestaffelten (150 Punkten)
    Erster Feldtest (175 Punkte) Der
    Spaß beginnt p1 (200 Punkte) Der
    Spaß beginnt p2 (205 Punkte)
    Final Boss (300 Punkte)


    Im Rahmen des Blockes sollten die Teilnehmer einige verwandte Aufgaben lösen.


    Der Ausgangspunkt war, den Teilnehmern ein Archiv mit verschiedenen Dateien zur Verfügung zu stellen, aber sie mussten Koordinaten in den Metainformationen finden. Dem Tipp wurde gesagt, dass der Autor topographische Kriterien hat, also müssen Sie Breiten- und Längengrad austauschen und eine Flagge in Form des Namens des Sees erhalten.


    In der zweiten Aufgabe war es erforderlich, eine Datei mit einem Flag im Dateisystem zu finden. Es gab auch einen Link, der den Zugang zu Aufgabe 3 öffnete. Als nächstes musste das Flag auf der gespeicherten Seite im Webarchiv gefunden werden. Bei den folgenden Aufgaben mussten die Teilnehmer einen populären Hacker aus einem Video auf Youtube herausfinden (die Flagge bestand aus Vor- und Nachnamen), um seinen Account in einem Hacker-Forum zu finden, in dem sich die Flagge und der Hinweis auf das Hacking der Website befanden. Dann musste ein Angriff auf die CTfOS-Website durchgeführt werden (das Hash-Passwort finden Sie im Cookie md5 und Sie können das Original-Passwort mit einem beliebigen Dienst abrufen, das Flag war das Admin-Passwort-Paar).


    Als Nächstes musste eine Verbindung über ssh hergestellt, das Archiv angezeigt, es über sftp heruntergeladen werden, das Passwort abgefragt werden, und statt des Bilds befand sich tatsächlich ein Archiv darin, und das Flag zu erhalten. Am Ende war die Portnummer „65530“, es war notwendig, ein Passwort (Rockyou-Wörterbuch) zu holen, das System zu formatieren und den Organisatoren Nachweise zu liefern.


    Sitis


    1. INSTA (100 Punkte)
      Für ein erfolgreiches Bestehen mussten Sie einen Instagram-Beitrag mit einem CTF-Foto und thematischen Hashtags erstellen.
    2. MINI-POLL (125 Punkte)
      Im Rahmen der Aufgabe wurden die Teilnehmer einer Mini-Umfrage unterzogen.

    Vrytapy


    Hier einige Analysen interessanter Aufgaben der CTF-Teilnehmer.




    Kotorova




    Kotorova, Schwerpunkt auf dem dritten "o". Aufgabe für 250 von 300 Punkten möglich. Der Spieler erhält ein Bild (siehe oben) und einen merkwürdigen Text, der aus den Wörtern „Miu“, „Meow“, „FRD“ und „Gesicht“ besteht.



    Durch visuelle Analyse des Bildes (und der Neugier in der Vergangenheit) ist uns klar, dass der Quelltext nichts anderes ist als die COW-Sprache mit ersetzten Operatoren. Nachdem Sie die folgenden Ersetzungen vorgenommen haben, können Sie eine "Kuh" -Meldung erhalten: Miu => MOo, Meow => MoO, FRR => OOO, Lik => Moo. Wir führen den resultierenden Code durch einen Online-Interpreter und erhalten das begehrte Token:






    Seltsamer Traum ...


    Seltsamerweise, aber die Idee dieser Aufgabe fiel einem Organisator tatsächlich in den Sinn, nachdem er an einem kalten Januarmorgen aufgewacht war. Beschreibung der Aufgabe:


    Ich träumte dann von einer Aufgabe, prüfe auf Entschlossenheit pzh: 3

    Aus dem Namen und der Beschreibung lässt sich leicht erraten, dass der Bezug auf Dmitry Ivanovich geht, nämlich Mendeleev. Nun wollen wir sehen, was wir in der Datei haben:


    0x53 0x49 0x54 0x49 0x53 0x7b 0x6d 0x65 Mx3c 0x65 0x6c 0x65 0x65 Mx17 0x5f 0x65 Mx21 Mx27 0x5f Mx4b Mxf Mx39 Mx3a 0x6d 0x65 Mx7 Mx75 0x7d

    Hex, aber mit seltsamen Präfixen "M" an einigen Stellen.
    Wir übersetzen HEX in ASCII und erhalten auf den ersten Blick eine gebrochene Flagge:




    Übertragen Sie in das Dezimalsystem nur Hex mit dem Präfix „M“, so erhalten Sie folgende Reihenfolge:


    60 23 33 39 75 15 57 58 7 117

    Denken Sie an die Beschreibung.




    Kombinieren Sie ASCII HEX mit Mendeleevs und holen Sie sich die Flagge.




    Musik


    Wir haben lange darüber nachgedacht, wie man Text in Notizen übersetzen kann, und schließlich wurde die Idee umgesetzt:




    Zunächst wurde entschieden, den Text mit ord ()
    "awsm_msic" in eine numerische Darstellung zu übersetzen, wobei der
    Platz zunächst absichtlich belassen wird, so dass die letzten Bits das letzte Zeichen nicht beeinträchtigen.


    ord():  [97, 119, 115, 109, 95, 109, 115, 105, 99, 32]

    Übersetzen Sie es dann in Bytes:


    >>bin():  ['01100001', '01110111', '01110011', '01101101', '01011111', '01101101', '01110011', '01101001', '01100011', '00100000']

    Verketten:


    concatenate:01100001011101110111001101101101010111110110110101110011011010010110001100100000

    Teilen Sie den resultierenden Text in drei Zeichen (Triolen). Da wir 8 Zahlen im Bereich von 000 bis 111 kodieren können, verwenden wir die Oktaven C5 und C6, die aus 8 Noten bestehen:


    ['011', '000', '010', '111', '011', …]
    ["C5","D5","E5","F5","G5","A5","B5","C6"]

    Es bleibt ziemlich viel, wir übersetzen die Triplets zurück in das Dezimalsystem und erstellen eine neue Liste basierend auf den Indizes der Notizen:


    ['F5', 'C5', 'E5', 'C6', 'F5', 'A5', 'B5', 'F5', 'F5', 'F5', 'E5', 'A5', 'C6', 'A5', 'A5', 'A5', 'F5', 'G5', 'B5', 'B5', 'G5', 'A5', 'G5', 'F5', 'D5', 'C5']

    Wir schreiben eine MIDI-Datei. Wenn Sie möchten, können Sie ein beliebiges Instrument verwenden, um die Noten klingen zu lassen.






    Rückwärts 250


    Zunächst zerlegen wir das Programm (mit IDA), konvertieren in C und suchen nach verdächtigen Zeilen:




    Es kann gefolgert werden, dass v39 ein Flag ist, das uns im Status "false" die gewünschte Zeichenfolge gibt.
    Schau mal, wo der Flaggenwechsel stattfindet:




    Wenn Sie diesen Code betrachten, ist es schwierig zu bestimmen, mit welchen Variablen wir Änderungen vornehmen müssen, damit das Flag dekrementiert wird. Durch zweimaliges Klicken auf die Variable Puffer gelangen Sie in das Stapelfenster des Programms. Wir müssen verstehen, dass Buffer eine Zeichenkette ist (da wir alles in das Programm eingeben können), was bedeutet, dass wir eine solche Größe festlegen werden, dass alle var_xxx-Variablen darin enthalten sind:




    Lesen Sie den Code ist viel einfacher geworden:




    Nun werden wir den Block der Zeichenänderung unserer Zeile betrachten




    Analysieren:


    1. v38 - die Summe der Werte von Zeichenvariablen (gemäß Bedingung 1231).
    2. Das 7-Zeilen-Element (Puffer 6) ist um 7 Bits verschoben, d. H. Es ist nicht möglich, die inverse Transformation durchzuführen (unabhängig davon, welche Zahl hier konvertiert wird, das Ergebnis ist 0).
    3. Die Schleife mit den Variablen v35, v41, v34 wird verwendet, um die Aufmerksamkeit umzuleiten (kopiert den Wert einer Zeichenfolge in eine andere, um die korrekte Übersetzung vom binären in das Hexadezimalsystem zu erhalten, da die Quellzeichenfolge geändert wird).
    4. Die Schleife mit den ersten drei Zeichen ist eine einfache Multiplikation mit 2.
    5. Von vierter bis sechster - etwas schwieriger. Die Gleichung muss gelöst werden (für das vierte Zeichen sieht es so aus: (x * 2) ^ 57 = 95). Obwohl es sich bei XOR um eine irreversible Operation handelt, ist es durchaus möglich, einen Wert mithilfe von Brute-Force-Werten auszuwählen. Selbst bei anfänglichen Fertigkeiten ist dies in wenigen Sekunden möglich.
    6. Die Änderungen sind vorbei, wir kehren zum Bedingungsblock zurück und erstellen einfache Gleichungen für die übrigen Elemente.

    Wir haben (x - unbekannt, 0 - bekannt): 000000x00000x. Die Summe der Werte = 1231. Wir subtrahieren die bekannten Werte von dieser Zahl und erhalten die Summe der unbekannten Zahlen = 164. Wir nehmen also zwei beliebige Zeichen, deren Summe gleich 164 sein wird. Basierend auf der Bedeutung des ersten Wortes seien es 'R' und 'R'.




    Nach der Einführung des Schlüssels erhalten wir unseren gewünschten Satz.




    Hmmmmm


    Beim Öffnen einer Aufgabe erhalten wir zwei Dateien: data.txt und Hmmmm.png:






    Offensichtlich ist die erste Zeile einer Textdatei eine Art Kodierung. In der Tat handelt es sich hierbei um eine gewöhnliche Base64, jedoch ohne das Zeichen "=" am Ende.


    Nach der Entschlüsselung sehen wir die Zahlen verdächtig ähnlich:




    Man kann schon an dieser Stelle vermuten, dass es sich um ein Gitter und dessen Neigungswinkel handelt. Aber wo ist die Schablone selbst? Natürlich haben wir immer noch eine binäre Menge von Zahlen, bei denen die überwältigende Zahl 1 und nur 8 Nullen ist.


    Testen Sie die Hypothese ist sehr einfach. Das Atom sagt, wir haben 256 Zeichen. Genauso wie in der Tabelle auf dem Foto, und wir können auch davon ausgehen, dass das Gitter quadratisch ist.




    Der bequemste Weg, Excel zu verwenden, ist wahrscheinlich das Zeichnen eines Gitters. So tun


    Eigentlich ist es hier:




    Angenommen, dies ist aus gutem Grund eine gegebene Position des Gitters in Bezug auf 0 Grad. Dann schreiben wir mit Hilfe von Manipulationen in Excel oder Photoshop die Zahlen aus den Fenstern auf:




    Was könnte es für Zahlen sein? Hexadezimalsystem ... natürlich Hex!




    Hurra, wir sind auf dem richtigen Weg, es bleibt das Gitter zu drehen und die restlichen Zahlen zu schreiben:


    Es stellt sich heraus, dass die gewünschte Sequenz in den blauen Zellen ist, das heißt:


    53 49 54 49 53 7b 43 61 72 64 61 6e 6f 5f 69 73 5f 70 72 6f 75 64 5f 6f 66 5f 79 6f 75 5f 21 7d



    Als Ergebnis erhalten wir: SITIS {Cardano_is_proud_of you !}


    Ja, ja, dies ist nur das von ihm im 16. Jahrhundert vorgeschlagene Cardano-Gitter. Einer der einfachsten kryptographischen Algorithmen.


    Trotz der scheinbaren Einfachheit und Offensichtlichkeit der Aufgabe konnte nur ein Team, "10x", diese Aufgabe lösen, obwohl es folgende Hinweise gab:





    Mitglieder


    Wettbewerber waren sowohl erfahrene CTFs als auch Anfänger.


    1. Platz, MLPWN:


    Mein Team hat gefallen. Was die Aufgaben angeht, so waren wir als recht erfahrenes Team nicht sehr schwer zu lösen. Es fiel auf, dass die Aufträge für Anfänger vorgesehen waren. Sie kamen nicht auf die Idee einer komplexen grausamen Aufgabe, wie viele Botschaften sie interessieren, was sehr cool ist. Was die Organisation anbelangt, war alles auf höchstem Niveau, was offen gesagt nicht immer in Schulkursen zu finden ist. Viel Glück für das SITIS-Team bei der Organisation des folgenden SITIS CTF!

    2 Platz, 10x


    3. Platz Inview:


    Dies war meine erste Ausfahrt CTF, da ich zuvor nur an der CTF innerhalb der SPB teilgenommen hatte. Die Aufgaben waren recht interessant und schwierig, aber das einzige Problem, das oftmals einfach war, war der Fall des Internets. Ich würde gerne nächstes Jahr kommen und hoffe, dass sich SITIS CTF nur verbessern wird. Ich wünsche den Organisatoren viel Erfolg bei Wettbewerben und bei der Organisation solcher Veranstaltungen.



    Der Gewinner war das Team MLPWN - My Little Pony (Pwnie).




    Es gab ziemlich viele Mädchen unter den Teilnehmern =)




    Der Kampf war ernst, manchmal war die Hilfe der Organisatoren nötig:




    Die Organisatoren


    Die Veranstaltung wird von einem jungen Team von SITIS organisiert . CTF-Partner waren Jet Infosystems (Komplementär von SITIS CTF ), Group-IB, Elefus, BCS und FSBI Voskhod.






    Für diejenigen, die für das Siegel gekommen sind. Er wurde im siegreichen Team entdeckt. Ich denke es war ein Zeichen.


    LV: erzähle ein paar Worte über dein Maskottchen - Siegel =)

    Lithium: Dies ist in der Tat nicht ganz unser Maskottchen. C: Wir haben dieses Team erst kürzlich zusammengestellt, bevor alle (na ja, fast alle) in verschiedenen Teams waren oder überhaupt kein Team hatten. Theodore war im SEAL-Team, dessen Maskottchen ein Siegel ist. Theodore zog ihn auch mit. Wir erwarteten tatsächlich, dass er sein Pony mitbrachte, das er in Sirius als Pwnie Award gewann.



    Siegel sagt: Sei kein Siegel, spiele CTF, schwing deine Fähigkeiten!


    Die Publikation behält Interpunktion und Rechtschreibung der CTF-Mitglieder bei.


    Jetzt auch beliebt: