[ImaginaryCTF 2021] – No Thoughts, Head Empty

Pada challenge ini, kita diberikan sebuah file bernama flag_min.bf. Dari deskripsi challengenya, sepertinya ini brainfuck. Coba kita cek dulu filenya.

Isi dari file flag_min.bf

Yup, benar ini brainfuck. Sebelum membahasa challenge ini, kita harus mengerti dulu syntax-syntax pada brainfuck.

Syntax-syntax Brainfuck dan equivalennya di bahasa pemrograman C.
Sumber : https://en.wikipedia.org/wiki/Brainfuck

Nah, kan lebih mudah dimengerti dibandingkan cuma membaca tanda panah dan kotak-kotak. Langsung saja kita coba decode menggunakan website yang telah diberikan di deskripsi challenge.

Hasil decode

Hmm. Menarik. disitu terlihat ada flag wrapper, tetapi setiap karakter yang dimunculkan secara geometris, yaitu 2n, yaitu 1, 2, 4, 8, 16, dan seterusnya. Berarti ada looping yang terjadi disini. Mari kita biarkan loopingnya terlebih dahulu, dan coba kita fokus kepada satu-satunya titik yang ada di file tersebut. Simbol titik pada brainfuck berfungsi seperti syntax putchar pada c, atau print pada python, yang berarti disini ada kesalahan penempatan titik itu, dan juga ada looping yang harus kita hilangkan. Coba kita fokus kepada bagian yang ada titiknya saja.

Pada bagian loop ini, titik itu berada di dalam sebuah nested loop, yaitu loop pertama ( [>… ), dan loop kedua ( <[[<… ). Nah setelah bagian loop kedua, syntax selanjutnya yaitu [<]<[<]<[<]>[-]>[>]>-] merupakan sebuah loop. Mungkin ini adalah penyebab setiap karakter muncul sebanyak 2n. Coba kita hilangkan terlebih dahulu, sehingga nanti codenya akan menjadi seperti ini.

Oke, mari kita coba decode.

Hanya character i yang dikeluarkan. Berarti, si simbol titik yang berfungsi sebagai putchar tidak berada di dalam loop agar setiap character dapat di munculkan. Mari kita pindahkan simbol titik tersebut ke setelah simbol buka kurung siku di kanannya, sehingga nanti codenya akan menjadi seperti ini.

Oke, sudah kita pindahkan kedalam loop kecil itu. Langsung aja lah kita decode.

ictf{0n3_ch@r@ct3r_0f_d1f3r3nce}

Leave a Reply

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