Assalamu'aikum teman-teman :)
Kali ini saya akan berbagi Write Up dari salah satu soal di IDCC Ctf 2018 yang baru saja berakhir. Selamat membaca~
Langsung saja soal kali merupakan soal Crypto. Diberikan sebuah file yang berisi string flag yang sudah di enkripsi dan program yang digunakan untuk enkripsi kedua file tersebut bisa didownload disini.
Pertama, kita lihat dulu program yang digunakan untuk mengenkripsi, kira-kira seperti ini.
Serta untuk hasil enkripsi flagnya adalah seperti ini:
Tugas kita adalah untuk mendekripsi string tersebut supaya bisa mendapatkan flagnya. Nah, karena proses dekripsi merupakan kebalikan dari proses enkripsi maka untuk mendekrip string tersebut kita memprosesnya secara terbalik.
Dilihat dari proses paling akhir yaitu mengubah nilai integer menjadi huruf. Maka langkah pertama untuk mendekripnya adalah mengubah setiap huruf dari string yang kita dapat menjadi bentuk integernya. Nilai integer itu didapat dari nilai var teks dan var kunci di modulo 127. Modulo disini bisa juga diartikan sebagai pengurangan. Maka jika pengurang dibalik hasilnya harus ditambah. Jadi integer yang sudah kita dapat ditambah dengan 127.
Sekarang nilai integernya merupakan jumlah dari nilai var teks dan var kunci. Disini saya mengguakan program seperti dibawah ini untuk mendapatkan nilai integernya:
Hasilnya:
Langkah selanjutnya kita harus melakukan proses bruteforce untuk bisa mendapatkan nilai dari kunci. Sedangkan untuk nilai dari var teks akan menjadi parameter pengecekan yang bisa kita tebak dari format flagnya. Dimana format dari flagnya pasti diawali dengan string 'IDCC{', nah kita cek jika kunci yang dimasukkan senilai maka itu kunci jika tidak senilai berarti bukan. Eit, tapi jangan lupa pada awal enkripsi bentuknya diencode dulu menjadi base64. Selanjutnya tambahkan beberapa baris script baru untuk mengecek key pada program yang sudah kita buat sebelumnya:
Hasil kuncinya:
Sekarang kita sudah mendapatkan nilai dari kunci. Saatnya melakukan dekripsi dari string flag yang sudah dienkripsi.Caranya adalah dengan mengurangi setiap nilai integer dari string enkripsi dengan kunci secara berulang kemudian diubah menjadi huruf lalu didecode base64. Kenapa dikurangi? Karena pada saat proses enkripsi ditambah. Kira-kira beginilah bentuk program untuk mendekripsinya:


Flag : IDCC{S1mpl3_4nd_stR4ight}
Sekian, terima kasih sudah menyimak sampai akhir. Silakan berikan kritik & saran kepada penulis, karena penulis juga masih belajar. :)
Kali ini saya akan berbagi Write Up dari salah satu soal di IDCC Ctf 2018 yang baru saja berakhir. Selamat membaca~
Langsung saja soal kali merupakan soal Crypto. Diberikan sebuah file yang berisi string flag yang sudah di enkripsi dan program yang digunakan untuk enkripsi kedua file tersebut bisa didownload disini.
Pertama, kita lihat dulu program yang digunakan untuk mengenkripsi, kira-kira seperti ini.


Dilihat dari proses paling akhir yaitu mengubah nilai integer menjadi huruf. Maka langkah pertama untuk mendekripnya adalah mengubah setiap huruf dari string yang kita dapat menjadi bentuk integernya. Nilai integer itu didapat dari nilai var teks dan var kunci di modulo 127. Modulo disini bisa juga diartikan sebagai pengurangan. Maka jika pengurang dibalik hasilnya harus ditambah. Jadi integer yang sudah kita dapat ditambah dengan 127.
Sekarang nilai integernya merupakan jumlah dari nilai var teks dan var kunci. Disini saya mengguakan program seperti dibawah ini untuk mendapatkan nilai integernya:





Hasilnya adalah flag:

Flag : IDCC{S1mpl3_4nd_stR4ight}
Sekian, terima kasih sudah menyimak sampai akhir. Silakan berikan kritik & saran kepada penulis, karena penulis juga masih belajar. :)





















