[ICHSA CTF 2021] – Baby Homework

Diberikan sebuah source code sebagai berikut :

Dari source code diatas, kita tahu bahwa algoritma enkripsi menggunakan AES mode ECB.  Inputan user + FLAG akan dienkrip menggunakan algoritma tersebut. Oleh karena itu, pertama saya coba masukkan inputan A. Dari situ,kita dapat jumlah bytesnya adalah 64, sehingga kita bisa simpulkan jumlah karakter pada flag <= 31

Lalu kita coba enumerate panjang dari flag dengan potongan code sebagai berikut. Jadi misalnya flagnya memiliki panjang 27. Jika kita kirim input “A” * 5, maka otomatis panjang ciphertext akan menjadi 96.

Jalankan script diatas, kita dapat 7 karakter dapat merubah cipherteks menjadi 96 bytes, sehingga kita tahu jumlah flag adalah 32 – 7 = 25 bytes.

Lalu kita akan coba exploit AES ECB. Jadi dalam AES ECB, string akan dibagi menjadi beberapa block, dan setiap blocknya mengandung 16 bytes. Sekarang, kita masukkan “A” * 31 sebagai inputan. Supaya genap 32 bytes, algoritma dari AES ECB akan membuat karakter pertama dari flag akan masuk ke block ke-2, jadi setiap block masing-masing terdiri dari 16 bytes. Misalnya, jika karakter pertama dari flag adalah “d”, maka block ke- 2 akan menjadi “A” * 15 + “d”. Lalu, misalnya hasil enkripsi dari “A” * 31 menghasilkan xxxxxx. Jika kita masukkan “A” * 31 + “d” sebagai inputan, maka ciphertextnya pasti akan sama dengan ciphertext dari “A” *31, yaitu xxxxxx. Hal tersebut dikarenakan kita berhasil menebak karakter pertama dari flag, yang merupakan padding agar block ke-2 menjadi 16 bytes. Oleh karena itu, kita brute force tiap karakternya menggunakan cara diatas dengan script dibawah :

Jalankan script diatas dan kita berhasil mendapatkan flagnya

Flag : ICHSA_CTF{d0n7_7ruzt_DeF4uL7_V4lu3z}

Leave a Reply

Your email address will not be published. Required fields are marked *