
Am 27. Januar 2019 fand die SITIS CTF-Veranstaltung statt - ein Informationssicherheitswettbewerb für Schüler und Studenten. Rund 80 junge Spezialisten und ein Siegel nahmen an dem Turnier teil. Das Spiel fand im Büro von Jet Infosystems statt, das junge SITIS- Team war der Organisator der Aufgaben und der technischen Plattform.
CTF
Das Ereignisformat ist eine aufgabenbasierte CTF (Jeopardy), bei der Spieler Aufgaben (Aufgaben) mit verschiedenen Schwierigkeitsgraden lösen. Die Antwort kann ein Zeichensatz oder eine beliebige Phrase sein. Für jede richtige Antwort (Flaggenerfassung) erhalten die Teilnehmer eine bestimmte Anzahl von Punkten. Der Zugriff auf einen Teil der Aufgaben wird erst nach der Entscheidung der vorherigen Aufgaben geöffnet.
Die Teilnehmer des CTF-Spiels konnten fast alle Aufgaben lösen, aber zwei von ihnen gaben nicht nach: höchstwahrscheinlich betroffen von Müdigkeit - die jungen Hacker und Hacker „brachen“ die Aufgabe und das Gehirn von morgens bis abends.
Missionen
PPC
Kette (200 Punkte)
Die Teilnehmer erhielten eine Reihe von Pixeln, die speziell in Hex umgewandelt wurden, darunter eine Kette von Schlüsselpixeln. Wenn Sie Hex in ein Bild übersetzen, erhalten Sie ein Bild mit einer Flagge.
Malerei (200 Punkte)
Die Teilnehmer erhielten ein Archiv mit etwa 1.600 monochromen Bildern mit einer Größe von 75 Bytes. Der Weg, um das Flag zu erhalten, besteht darin, Zahlen in Bildern mit Nullen als Trennzeichen hinzuzufügen und die resultierende Liste in eine Zeichenfolgendarstellung zu übersetzen.
Kotorova (250 Punkte)
Siehe den Abschnitt „Vraytapy“.
Musik (300 Punkte)
Siehe den Abschnitt „Vraytapy“.
RÜCKWÄRTS
Razminka (75 Punkte)
Die Teilnehmer benötigten die anfänglichen Umkehrfähigkeiten, das Passwort wurde als Zeichenvariablen in der Hauptklasse gespeichert.
Meine Schöpfung! (250 Punkte)
Siehe den Abschnitt „Vraytapy“.
CRYPTO
Seltsamer Traum (100 Punkte)
Siehe den Abschnitt „Vraytapy“.
Hmmmmmmm (150 Punkte)
Siehe den Abschnitt „Vraytapy“.
Freude
a (25 Punkte)
Die Teilnehmer mussten eine klein gedruckte Flagge auf einem der Rahmen in einem GIF mit Siegeln finden.
Schneeflocken (75 Punkte)
Die Teilnehmer erhielten eine HTML-Datei mit verschleiertem Javascript-Code. Es war notwendig, aus den Symbolen, die langsam auf die Seite fielen, eine Flagge zu machen.
Flagge unter uns (100 Punkte)
Der Aufgabe wurde ein Bild beigefügt.

Zunächst beeilten sich alle, nach einer Flagge im Bild zu suchen. Es war empfehlenswert, zur Beschreibung und zum Titel der Aufgabe zurückzukehren und sie noch einmal sorgfältig zu lesen, um sicherzustellen, dass die Flagge nicht vorhanden ist. Tatsache ist, dass beim Wettbewerb selbst an den Türen der Räume, in denen die Veranstaltung stattfand, ungewöhnliche Aufkleber mit QR-Codes angebracht waren.

Nachdem alle Teile gesammelt worden waren, war es möglich, den Ausdruck HRGRH {9I3371M95_7i4e3o3i} zu erhalten. Die Flagge wird hier offensichtlich verfolgt, aber verschlüsselt. Für die Aufgabe wurden nicht viele Punkte vergeben, daher wäre es logisch, dass die Verschlüsselung nicht kompliziert sein sollte. Durch eine Suche nach den Hauptoptionen konnte geschlossen werden, dass Atbash hier war. SITIS-Flag {9R3371N95_7r4v3l3r}.
STEGO
Fehler oder Funktion? (50 Punkte)
Der Aufgabe wurde ein Textdokument beigefügt, in dem es auf den ersten Blick nur zwei Zeilen gab. Bei näherer Betrachtung und Hervorhebung des Textes konnte man jedoch in 39 Zeilen viele Leerzeichen und Tabulatoren sehen. Diejenigen, die dies bereits erlebt haben, sollten keine Probleme haben, eine Flagge zu bekommen.
Poesie (75 Punkte)
Die Teilnehmer erhielten ein Bild eines Rahmens aus dem Film "The Game of Imitation". Es war notwendig, das Originalbild zu finden und zu vergleichen und aus den verschiedenen Pixeln ein neues Bild mit Versen von Byron zu erstellen, dessen Nachname die Flagge war.
GESCHICHTE
Willkommen (50 Punkte)
Droiden überall (100 Punkte)
Es ist Zeit zu lüften (105 Punkte)
Hilfe ist nie überflüssig (125 Punkte)
Sie müssen einen Hirsch spielen (150 Punkte)
Erster Feldtest (175 Punkte)
Spaß beginnt p1 (200 Punkte)
Spaß beginnt p2 (205 Punkte)
Final Boss (300 Punkte)
Innerhalb des Blocks mussten die Teilnehmer mehrere verwandte Aufgaben lösen.
Es ging darum, den Teilnehmern ein Archiv mit verschiedenen Dateien zur Verfügung zu stellen, aber sie mussten die Koordinaten in den Metainformationen finden. Der Hinweis besagt, dass der Autor einen topografischen Kretinismus hat. Sie müssen also den Breiten- und Längengrad vertauschen und eine Flagge in Form des Seenamens erhalten.
In der zweiten Aufgabe musste eine Datei mit einem Flag im Dateisystem gefunden werden. Es gab auch einen Link, der den Zugriff auf 3 Aufgaben öffnete. Als nächstes musste die Flagge auf der gespeicherten Seite im Webarchiv gefunden werden. In den folgenden Aufgaben mussten die Teilnehmer einen beliebten Hacker aus einem Video auf Youtube herausfinden (sein Vor- und Nachname waren die Flagge), seinen Account in einem Forum von „Hackern“ finden, in dem es eine Flagge und einen Hinweis zum Hacken der Website gab. Dann war es notwendig, einen Angriff auf die CTfOS-Website durchzuführen (finden Sie das Hash-Passwort im Cookie md5 und verwenden Sie den Dienst, um das ursprüngliche Passwort zu erhalten, das Flag war das Admin + Passwort-Paar).
Als nächstes mussten Sie eine Verbindung über ssh herstellen, das Archiv anzeigen, es über sftp herunterladen, ein Passwort abrufen, herausfinden, dass anstelle des darin enthaltenen Bildes tatsächlich ein Archiv vorhanden war, und eine Flagge erhalten. Am Ende war die Portnummer „65530“. Es war erforderlich, ein Passwort (Rockyou-Wörterbuch) auszuwählen, das System zu formatieren und den Organisatoren Nachweise zu liefern.
Sitis
- INSTA (100 Punkte)
Um erfolgreich zu sein, mussten Sie einen Instagram-Beitrag mit einem CTF-Foto und thematischen Hashtags erstellen. - MINI-POLL (125 Punkte)
Im Rahmen der Aufgabe haben die Teilnehmer eine Mini-Umfrage bestanden.
Vraytapy
Hier einige Analysen interessanter Aufgaben der CTF-Teilnehmer.
Kotorova

Kotorova, Betonung auf das dritte "o". Aufgabe für 250 von 300 möglichen Punkten. Der Spieler erhält ein Bild (siehe oben) und einen seltsamen Text, der aus den Wörtern "Miu", "Meow", "FRR" und "Face" besteht.

Durch visuelle Analyse des Bildes (und Neugier in der Vergangenheit) verstehen wir, dass der Quelltext nichts anderes als die COW-Sprache mit ersetzten Operatoren ist. Nachdem Sie die folgenden Ersetzungen vorgenommen haben, erhalten Sie eine "Kuh" -Nachricht: Miu => MOo, Meow => MoO, RDF => OOO, Lik => Moo. Führen Sie den resultierenden Code durch den Online-Interpreter und erhalten Sie das begehrte Token:

Ein seltsamer Traum ...
Seltsamerweise, aber die Idee dieser Aufgabe kam einem der Organisatoren wirklich in den Sinn, nachdem er an einem kalten Januarmorgen aufgewacht war. Beschreibung der Aufgabe:
Ich habe hier von einer Aufgabe geträumt, auf Lösbarkeit prüfen pzh: 3
Aus dem Namen und der Beschreibung ist leicht zu ersehen, dass der Verweis auf Dmitri Iwanowitsch geht, nämlich auf Mendelejew. 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 an einigen Stellen mit seltsamen "M" -Präfixen.
Wir übersetzen HEX in ASCII und erhalten auf den ersten Blick sofort eine kaputte Flagge:

Nachdem wir nur Hex mit dem Präfix "M" in das Dezimalsystem übersetzt haben, erhalten wir die folgende Reihenfolge:
60 23 33 39 75 15 57 58 7 117
Wir erinnern uns an die Beschreibung.

Kombiniere ASCIInut HEX mit Mendeleevs und erhalte die Flagge.
Musik
Wir haben lange darüber nachgedacht, wie wir den Text in Notizen übersetzen können, und schließlich wurde die Idee verwirklicht:

Zunächst wurde beschlossen, den Text mit ord () in eine numerische Darstellung zu übersetzen.
"awsm_msic"
Zunächst wird absichtlich ein Leerzeichen gelassen, damit die letzten Bits das letzte Zeichen nicht verderben.
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 Dreierzeichen (Drillinge) auf. Da 8 Zahlen im Bereich von 000 bis 111 codiert werden können, verwenden wir einen Satz von Noten der Oktaven C5 und C6, der aus 8 Noten besteht:
['011', '000', '010', '111', '011', …] ["C5","D5","E5","F5","G5","A5","B5","C6"]
Es bleibt nur ein bisschen, wir übersetzen die Drillinge zurück in das Dezimalzahlensystem und erstellen eine neue Liste basierend auf den Notenindizes:
['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 mit jedem Instrument Noten einen Klang verleihen.

Rückwärts 250
Zunächst zerlegen wir das Programm (mithilfe der IDA), konvertieren es in C und suchen nach verdächtigen Zeilen:

Wir können daraus schließen, dass v39 ein Flag ist, das uns im falschen Zustand die gesuchte Zeichenfolge gibt.
Wir schauen, wo sich die Flagge ändert:

Bei Betrachtung dieses Codes ist es schwierig zu bestimmen, mit welchen Variablen Änderungen vorgenommen werden müssen, damit das Flag dekrementiert wird. Durch Doppelklicken auf die Variable Buffer gelangen wir zum Fenster zum Anzeigen des Programmstapels. Wir müssen verstehen, dass Buffer eine Zeichenfolge ist (da wir alles in das Programm eingeben können), was bedeutet, dass wir diese Größe so einstellen, dass alle var_xxx-Variablen darin enthalten sind:

Das Lesen des Codes ist viel einfacher geworden:

Betrachten Sie nun den Block, der die Zeichen unserer Zeichenfolge ändert.

Wir analysieren:
- v38 ist die Summe der Werte symbolischer Variablen (gemäß Bedingung 1231).
- Das 7-Zeilenelement (Buffer_6) ist um 7 Bits verschoben, d.h. Es ist unmöglich, die Konvertierung umzukehren (egal welche Zahl hier konvertiert wird, das Ergebnis ist 0).
- Die Schleife mit den Variablen v35, v41, v34 wird verwendet, um die Aufmerksamkeit abzulenken (kopiert den Wert einer Zeile in eine andere, um die korrekte Übersetzung von binär nach hexadezimal zu speichern, da wir die ursprüngliche Zeile ändern).
- Der Zyklus mit den ersten drei Zeichen ist eine einfache Multiplikation mit 2.
- Der vierte bis sechste ist etwas schwieriger. Es ist notwendig, die Gleichung zu lösen (für das vierte Zeichen sieht es so aus: (x * 2) ^ 57 = 95). Obwohl XOR eine irreversible Operation ist, ist es durchaus möglich, einen Wert mithilfe der Aufzählung auszuwählen, und selbst mit anfänglichen Fähigkeiten kann dies in wenigen Sekunden abgeschlossen werden.
- Die Änderungen sind vorbei, wir kehren zum Block der Bedingungen zurück und erstellen einfache Gleichungen für die verbleibenden Elemente.
Wir haben (x - unbekannt, 0 - bekannt): 000000x00000x. Die Summe der Werte = 1231. Subtrahieren Sie die bekannten Zahlen von dieser Zahl und erhalten Sie die Summe der unbekannten Zahlen = 164. Daher nehmen wir zwei beliebige Zeichen, deren Summe 164 sein wird. Basierend auf der Bedeutung des ersten Wortes sei es 'R' und 'R'.

Nach Eingabe des Schlüssels erhalten wir unseren gewünschten Ausdruck.
Hmmmmm
Beim Öffnen der Aufgabe erhalten wir zwei Dateien: data.txt und Hmmmm.png:


Offensichtlich ist die erste Zeile in der Textdatei eine Kodierung. In der Tat ist dies eine gewöhnliche Base64, allerdings ohne das dafür typische "=" - Zeichen am Ende.
Nach der Entschlüsselung sehen wir Zahlen, die verdächtig ähnlich wie Grad sind:

Bereits an diesem Punkt kann man vermuten, dass es sich um ein Gitter und seinen Neigungswinkel handelt. Aber wo ist die Schablone selbst? Natürlich haben wir immer noch einen binären Satz von Zahlen, in denen die überwältigende Zahl 1 und nur 8 Nullen ist.
Das Testen einer Hypothese ist sehr einfach. Das Atom sagt, wir haben 256 Zeichen. Genauso wie in der Tabelle auf dem Foto, und daraus können wir auch erraten, dass das Gitter quadratisch ist.

Der wahrscheinlich beste Weg ist, Excel zu verwenden, um das Raster zu skizzieren. Also lass es uns tun.
Eigentlich ist es hier:

Nehmen wir an, und dies ist nicht umsonst, dass dies die gegebene Position des Gitters relativ zu 0 Grad ist. Schreiben Sie dann mithilfe der Manipulationen in Excel oder Photoshop die Zahlen aus den Fenstern:

Was für Zahlen können das sein? Hexadezimal ... Hex natürlich!

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

Es stellt sich heraus, dass sich die gewünschte Sequenz in blauen Zellen befindet, dh:
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

Das Ergebnis ist: SITIS {Cardano_is_proud_of you !}
Ja, ja, dies ist nur ein Cardano-Gitter, das er im 16. Jahrhundert vorgeschlagen hat. Einer der einfachsten kryptografischen Algorithmen.
Trotz der offensichtlichen Einfachheit und Offensichtlichkeit der Aufgabe konnte nur ein Team sie lösen - „10x“, trotz solcher Hinweise:


Mitglieder
Die Teilnehmer waren sowohl erfahrene CTF'er als auch Anfänger.
1. Platz, MLPWN:
Meinem Team hat es gefallen. Was die Aufgaben angeht, war es für uns als ziemlich erfahrenes Team nicht sehr schwierig, sie zu lösen. Es fiel auf, dass die Aufgaben für Anfänger konzipiert waren. Sie trafen nicht so sehr auf die Idee einer schwierigen grausamen Aufgabe, wie sehr eine Botschaft zu interessieren ist, was sehr cool ist. Bei der Organisation war alles auf höchstem Niveau, was ehrlich gesagt nicht immer in Schulzentren zu finden ist. Ich wünsche dem SITIS-Team viel Glück bei der Organisation der folgenden SITIS CTF!
2 Platz, 10x
3. Platz, Inview:
Dies war mein erster Besuch bei CTF, da ich zuvor nur an CTF in St. Petersburg teilgenommen habe. Aufgaben waren sehr interessant und schwierig, aber das einzige Problem, das oft 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 sowohl bei den Wettbewerben als auch bei der Organisation solcher Veranstaltungen.

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

Unter den Teilnehmern waren einige Mädchen =)

Der Kampf war ernst, manchmal war die Hilfe der Organisatoren erforderlich:

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

Für diejenigen, die für ein Siegel kamen. Er wurde im Gewinnerteam gesehen. Ich denke es war ein Zeichen.
LV: Erzählen Sie ein paar Worte über Ihr Maskottchen - Siegel =)
Lithium: Tatsächlich ist dies nicht gerade unser Maskottchen. C: Wir haben dieses Team vor relativ kurzer Zeit zusammengestellt, bevor alle (na ja, fast alle) in verschiedenen Teams waren oder überhaupt kein Team hatten. Theodore war im SEAL-Team, dessen Maskottchen das Siegel ist. Theodore zog ihn. Wir haben tatsächlich erwartet, dass er sein Pony mitbringt, das er in Sirius als Pwnie Award gewonnen hat.

Seal sagt: Sei kein Seal, spiele CTF, verbessere deine Fähigkeiten!
Die Veröffentlichung behält die Zeichensetzung und Rechtschreibung der CTF-Mitglieder bei.