
Pada tanggal 27 Januari 2019, acara CTF SITIS diadakan - kompetisi keamanan informasi untuk siswa sekolah dan mahasiswa. Sekitar 80 spesialis muda dan satu anjing laut ikut serta dalam turnamen. Permainan ini diadakan di kantor Jet Infosystems, tim SITIS muda adalah penyelenggara tugas dan platform teknis.
CTF
Format acara adalah CTF berbasis tugas (bahaya), di mana pemain menyelesaikan tugas (tugas) dari berbagai tingkat kesulitan. Jawabannya bisa berupa rangkaian karakter atau kalimat arbitrer. Untuk setiap jawaban yang benar (pengambilan bendera), peserta menerima sejumlah poin. Akses ke bagian dari tugas terbuka hanya setelah keputusan yang sebelumnya.
Peserta permainan-CTF berhasil menyelesaikan hampir semua tugas, tetapi dua di antaranya tidak menyerah: kemungkinan besar, keletihan terpengaruh - peretas dan peretas muda “mematahkan” tugas dan otak dari pagi hingga sore.
Misi
PPC
Rantai (200 poin)
Para peserta diberikan satu set piksel, yang secara khusus dikonversi menjadi hex, di antaranya adalah rangkaian piksel kunci. Dengan menerjemahkan hex menjadi gambar, Anda bisa mendapatkan gambar dengan bendera.
Lukisan (200 poin)
Para peserta diberikan arsip yang berisi sekitar 1.600 gambar monokrom yang menggambarkan jumlah ukuran 75 byte. Cara untuk mendapatkan bendera adalah dengan menambahkan angka dalam gambar menggunakan nol sebagai pemisah dan menerjemahkan daftar yang dihasilkan menjadi representasi string.
Kotorova (250 poin)
Lihat bagian “Vraytapy”.
Musik (300 poin)
Lihat bagian “Vraytapy”.
REVERSE
Razminka (75 poin)
Para peserta membutuhkan keterampilan membalikkan awal, kata sandi disimpan sebagai variabel char di kelas utama.
Ciptaan saya! (250 poin)
Lihat bagian “Vraytapy”.
CRYPTO
Strange Dream (100 poin)
Lihat bagian “Vraytapy”.
Hmmmmmmm (150 poin)
Lihat bagian “Vraytapy”.
Sukacita
a (25 poin)
Peserta perlu menemukan bendera dalam cetakan kecil di salah satu bingkai dalam gif dengan segel.
Kepingan Salju (75 poin)
Peserta diberikan file html dengan kode javascript yang dikaburkan. Itu perlu untuk membuat bendera dari simbol perlahan jatuh di halaman.
Tandai Di antara Kami (100 poin)
Sebuah gambar dilampirkan pada tugas.

Pertama-tama, semua orang bergegas mencari bendera di gambar. Mengaduk-aduk itu dan memastikan bahwa bendera tidak ada di sana, itu layak kembali ke deskripsi dan judul tugas dan hati-hati membacanya lagi. Faktanya adalah bahwa pada kompetisi itu sendiri, di pintu kamar tempat acara itu diadakan, ada stiker yang tidak biasa dengan kode QR.

Setelah mengumpulkan semua bagian, dimungkinkan untuk mendapatkan frasa HRGRH {9I3371M95_7i4e3o3i}. Bendera jelas ditelusuri di sini, tetapi dienkripsi. Tidak banyak poin yang diberikan untuk tugas itu, jadi akan logis bahwa sandi tidak boleh rumit. Dengan mencari opsi utama, dapat disimpulkan bahwa Atbash ada di sini. Bendera SITIS {9R3371N95_7r4v3l3r}.
STEGO
Bug atau fitur? (50 poin)
Dokumen teks dilampirkan pada tugas, di mana, pada pandangan pertama, hanya ada 2 baris. Namun, dengan melihat lebih dekat dan menyoroti teks, orang dapat melihat banyak spasi dan tab pada 39 baris. Mereka yang sudah mengalami ini seharusnya tidak kesulitan mendapatkan bendera.
Puisi (75 poin)
Para peserta diberi gambar bingkai dari film "The Game of Imitation." Itu perlu untuk menemukan gambar asli dan membandingkannya, dan dari piksel yang berbeda untuk membuat gambar baru dengan ayat-ayat dari Byron, yang nama belakangnya adalah bendera.
CERITA
Selamat Datang (50 poin)
Droids Everywhere (100 poin)
Saatnya berventilasi (105 poin)
Bantuan tidak pernah berlebihan (125 poin)
Anda harus bermain rusa (150 poin)
Tes lapangan pertama (175 poin)
Kesenangan dimulai p1 (200 poin)
Menyenangkan dimulai p2 (205 poin)
Boss Terakhir (300 poin)
Di dalam blok, peserta harus mengurai beberapa tugas terkait.
Intinya adalah untuk memberikan peserta dengan berbagai file arsip, tetapi mereka perlu menemukan koordinat dalam meta-informasi. Petunjuk mengatakan bahwa penulis memiliki kretinisme topografi, jadi Anda perlu menukar lintang dan bujur dan mendapatkan bendera dalam bentuk nama danau.
Dalam tugas kedua, itu perlu untuk menemukan file dengan bendera di sistem file. Ada juga tautan yang membuka akses ke 3 tugas. Selanjutnya, bendera harus ditemukan pada halaman yang disimpan di arsip web. Dalam tugas-tugas berikut, para peserta harus mencari tahu peretas populer dari sebuah video di Youtube (nama dan nama keluarganya adalah bendera), menemukan akunnya di beberapa forum "peretas", di mana ada bendera dan petunjuk untuk meretas situs tersebut. Maka itu perlu untuk melakukan serangan pada situs web CTfOS (menemukan kata sandi hash di cookie md5 dan menggunakan layanan untuk mendapatkan kata sandi asli, bendera adalah admin + pasangan kata sandi).
Selanjutnya, Anda harus terhubung melalui ssh, melihat arsip, mengunduhnya melalui sftp, mengambil kata sandi, mencari tahu bahwa alih-alih gambar di dalamnya sebenarnya ada arsip, dan mendapatkan bendera. Pada akhirnya, nomor port adalah "65530", perlu untuk memilih kata sandi (kamus rockyou), kemudian memformat sistem dan memberikan bukti kepada penyelenggara.
Sitis
- INSTA (100 poin)
Agar berhasil, Anda harus membuat pos Instagram dengan foto CTF dan tagar tematik. - MINI-POLL (125 poin)
Sebagai bagian dari tugas, peserta lulus survei mini.
Vraytapy
Berikut adalah beberapa analisis tugas menarik dari peserta KKP.
Kotorova

Kotorova, penekanan pada "o" ketiga. Tugas untuk 250 poin dari 300 kemungkinan. Pemain diberi gambar (lihat di atas) dan teks aneh yang terdiri dari kata "Miu", "Meow", "FRR" dan "Face".

Dengan analisis visual gambar (dan keingintahuan di masa lalu), kami memahami bahwa teks sumber tidak lain adalah bahasa COW dengan operator yang diganti. Setelah melakukan penggantian berikut, Anda bisa mendapatkan pesan "sapi": Miu => MOo, Meow => MoO, RDF => OOO, Lik => Moo. Jalankan kode yang dihasilkan melalui penerjemah online dan dapatkan token yang diidamkan:

Mimpi aneh ...
Anehnya, tetapi gagasan tugas ini benar-benar muncul di benak salah satu penyelenggara setelah bangun pada suatu pagi di bulan Januari yang dingin. Deskripsi tugas:
Saya memimpikan tugas di sini, periksa solvabilitas pzh: 3
Dari nama dan uraiannya, mudah ditebak bahwa rujukannya adalah Dmitry Ivanovich, yaitu Mendeleev. Sekarang mari kita lihat apa yang kita miliki di file:
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, tetapi dengan awalan "M" yang aneh di beberapa tempat.
Kami menerjemahkan HEX ke ASCII dan segera mendapatkan, pada pandangan pertama, bendera yang rusak:

Setelah menerjemahkan hanya Hex dengan awalan "M" ke dalam sistem desimal, kami mendapatkan urutan berikut:
60 23 33 39 75 15 57 58 7 117
Kami mengingat deskripsi.

Gabungkan ASCIInut HEX dengan Mendeleev's dan dapatkan benderanya.
Musik
Kami berpikir tentang bagaimana menerjemahkan teks ke dalam catatan untuk waktu yang lama, dan akhirnya gagasan itu terwujud:

Pertama-tama, diputuskan untuk menerjemahkan teks ke dalam representasi numerik menggunakan ord ()
"awsm_msic"
Ruang dibiarkan sengaja pada awalnya sehingga bit terakhir tidak merusak karakter terakhir.
ord(): [97, 119, 115, 109, 95, 109, 115, 105, 99, 32]
Kemudian terjemahkan ke dalam byte:
>>bin(): ['01100001', '01110111', '01110011', '01101101', '01011111', '01101101', '01110011', '01101001', '01100011', '00100000']
Menggabungkan:
concatenate:01100001011101110111001101101101010111110110110101110011011010010110001100100000
Pisahkan teks yang dihasilkan menjadi karakter tiga (kembar tiga). Karena 8 angka dapat dikodekan dalam kisaran dari 000 hingga 111, kami akan menggunakan satu set catatan oktaf C5 dan C6, yang terdiri dari 8 catatan:
['011', '000', '010', '111', '011', …] ["C5","D5","E5","F5","G5","A5","B5","C6"]
Masih sedikit, kami menerjemahkan kembar tiga kembali ke sistem angka desimal dan menyusun daftar baru berdasarkan indeks catatan:
['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']
Kami menulis file MIDI, jika Anda mau, Anda dapat menggunakan instrumen apa pun untuk memberikan suara.

Membalikkan 250
Pertama-tama, kami membongkar program (menggunakan IDA), mengonversinya menjadi C dan mencari baris yang mencurigakan:

Kita dapat menyimpulkan bahwa v39 adalah flag yang dalam keadaan false akan memberi kita string yang kita cari.
Kami melihat di mana bendera berubah:

Melihat kode ini, sulit untuk menentukan dengan variabel mana kita harus membuat perubahan sehingga flag dikurangi. Dengan mengklik dua kali pada variabel Buffer, kita sampai ke jendela untuk melihat tumpukan program. Kita harus memahami bahwa Buffer adalah sebuah string (karena kita dapat memasukkan apa saja ke dalam program), yang berarti kita akan mengatur ukuran ini sehingga semua variabel var_xxx ada di dalamnya:

Membaca kode menjadi lebih mudah:

Sekarang pertimbangkan blok mengubah karakter string kita.

Kami menganalisis:
- v38 adalah jumlah dari nilai variabel simbolik (dengan kondisi 1231).
- 7 elemen garis (Buffer_6) digeser oleh 7 bit, yaitu tidak mungkin membalik konversi (tidak peduli berapa nomor yang dikonversi di sini, hasilnya adalah 0).
- Pengulangan dengan variabel v35, v41, v34 digunakan untuk mengalihkan perhatian (menyalin nilai satu baris ke yang lain untuk menyimpan terjemahan yang benar dari biner ke heksadesimal, karena kami mengubah baris asli).
- Siklus dengan tiga karakter pertama adalah perkalian sederhana dengan 2.
- Keempat hingga keenam sedikit lebih sulit. Adalah perlu untuk menyelesaikan persamaan (untuk karakter keempat akan terlihat seperti ini: (x * 2) ^ 57 = 95). Meskipun XOR adalah operasi yang tidak dapat dibatalkan, sangat mungkin untuk memilih nilai menggunakan enumerasi, dan bahkan dengan keterampilan awal, ini dapat diselesaikan dalam beberapa detik.
- Perubahan sudah berakhir, kita kembali ke blok kondisi dan menyusun persamaan sederhana untuk elemen yang tersisa.
Kami memiliki (x - tidak diketahui, 0 - dikenal): 000000x00000x. Jumlah nilai = 1231. Kurangi angka yang diketahui dari angka ini dan dapatkan bahwa jumlah angka yang tidak diketahui = 164. Oleh karena itu, kita mengambil dua karakter yang jumlahnya akan 164. Berdasarkan makna kata pertama, biarlah 'R' dan 'R'.

Setelah memasukkan kunci, kita akan mendapatkan frasa yang kita inginkan.
Hmmmmm
Saat membuka tugas, kami mendapatkan dua file: data.txt dan Hmmmm.png:


Jelas, baris pertama dalam file teks adalah beberapa penyandian. Memang, ini adalah Base64 biasa, meskipun tanpa tanda "=" yang khas pada akhirnya.
Setelah diterjemahkan, kami melihat angka-angka yang mencurigakan mirip dengan derajat:

Sudah pada titik ini, orang dapat menebak bahwa kita berbicara tentang beberapa kisi dan sudut kemiringannya. Tapi di mana stensil itu sendiri? Tentu saja, kita masih memiliki satu set angka biner di mana angka yang luar biasa adalah 1 dan hanya 8 nol.
Menguji hipotesis sangat sederhana. Atom mengatakan kita memiliki 256 karakter. Sama seperti di tabel di foto, dan dari sini kita juga bisa menebak bahwa kisi itu persegi.

Mungkin cara terbaik adalah menggunakan Excel untuk menguraikan kisi-kisi. Jadi mari kita lakukan.
Sebenarnya, ini dia:

Misalkan, dan tidak sia-sia, bahwa ini adalah posisi yang diberikan kisi relatif terhadap 0 derajat. Kemudian, menggunakan manipulasi di Excel atau Photoshop, tulis angka-angka dari windows:

Angka seperti apa ini? Heksadesimal ... Hex, tentu saja!

Hore, kita berada di jalur yang benar, tetap memutar grid dan menuliskan angka yang tersisa:

Ternyata urutan yang diinginkan adalah dalam sel biru, yaitu:
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

Hasilnya adalah: SITIS {Cardano_is_proud_of you !}
Ya, ya, ini hanya kisi Cardano, yang diusulkan olehnya pada abad ke-16. Salah satu algoritma kriptografi yang paling sederhana.
Namun demikian, terlepas dari kesederhanaan dan kejelasan tugas tersebut, hanya satu tim yang dapat menyelesaikannya - “10x”, meskipun ada petunjuk seperti itu:


Anggota
Pesaing keduanya adalah CTF'ers berpengalaman dan pemula.
Posisi Pertama, MLPWN:
Tim saya menyukainya. Adapun tugas, itu tidak terlalu sulit bagi kami, sebagai tim yang agak berpengalaman, untuk menyelesaikannya, terlihat bahwa tugas-tugas itu dirancang untuk pemula, mereka tidak bertemu begitu banyak gagasan tentang tugas kejam yang sulit, berapa banyak pesan yang menarik, yang sangat keren. Adapun organisasi, semuanya berada di tingkat tertinggi, yang, jujur saja, tidak selalu ditemukan di pusat-pusat sekolah. Saya berharap semoga sukses untuk tim SITIS dalam mengatur SITIS CTF berikut!
2 tempat, 10x
Juara 3, Inview:
Ini adalah CTF kunjungan pertama saya, karena sebelumnya saya hanya berpartisipasi dalam CTF di St. Petersburg. Tugasnya cukup menarik dan sulit, tetapi satu-satunya masalah karena yang seringkali sederhana adalah jatuhnya Internet. Saya ingin datang tahun depan dan berharap bahwa CTF SITIS hanya akan membaik. Saya berharap penyelenggara sukses dalam kompetisi dan organisasi acara tersebut.

Pemenangnya adalah tim MLPWN - My Little Pony (Pwnie).

Di antara peserta ada beberapa perempuan =)

Pertarungan itu serius, kadang-kadang bantuan dari panitia diperlukan:

Penyelenggara
Acara ini diselenggarakan oleh tim muda SITIS . Mitra CTF adalah Jet Infosystems (mitra umum SITIS CTF ), Group-IB, Elefus, BCS, dan FSBI Research Institute Voskhod.

Bagi mereka yang datang untuk meterai. Dia terlihat di tim pemenang. Saya pikir itu pertanda.
LV: ceritakan beberapa kata tentang maskot Anda - seal =)
lithium: sebenarnya, ini bukan maskot kami c: Kami mengumpulkan tim ini relatif baru-baru ini, sebelum itu semua (well, hampir semua) berada di tim yang berbeda atau tidak memiliki tim sama sekali. Theodore berada di tim SEAL, yang maskotnya adalah segel. Theodore menyeretnya. Kami benar-benar berharap dia membawa pony-nya, yang dia menangkan di Sirius sebagai Pwnie Award)

Seal mengatakan: jangan menjadi anjing laut, mainkan CTF, tambah keterampilanmu!
Publikasi mempertahankan tanda baca dan ejaan anggota KKP.