Droids2

Jeffrey Jingga, Muhammad Mazaya R. S. & Paul Bright Yaftoran


Kali ini saya mencoba untuk menyelesaikan sebuah challenge CTF yang bernama droids2. Di challenge ini diberikan sebuah file dengan extension .apk. .apk merupakan extension dari aplikasi-aplikasi yang digunakan pada operating system Android.

Karena kebetulan saya sudah menginstall BlueStacks(Emulator Android) maka saya bisa langsung menjalankan aplikasi tersebut.

Ini adalah tampilan app tersebut ketika dibuka. Terdapat sebuah tombol yang bisa kita klik. Jika kita tidak menginput apapun atau inputnya random maka akan keluar sebuah kata NOPE.

Karena sudah diketahui bahwa ini adalah sebuah app android maka saya menggunakan JADX, sebuah program untuk men decompile sebuah program ke Java.

Pada menu Source code terdapat dropdown menu bernama com.hellocmu.picoctf.

Jika dibuka maka akan terlihat BuildConfig, FlagstaffHill, MainActivity, dan R.

BuildConfig berisi informasi tentang app tersebut.

FlagstaffHill berisikan sebuah function yang bernama getflag, yang dari namanya saja sudah memberikan sebuah clue. Di dalam function tersebut ada sebuah array bernama witches yang berisi enam string. Kemudian ada beberapa variable integer dan sebuah string bernama password. Dalam string password terdapat concat yang berfungsi untuk menambahkan atau menggabungkan dua buah string menjadi satu. Kita bisa lihat juga concat dilakukan berkali-kali untuk menggabungkan string dalam array witches. String password= "".concat(witches[fifth]).concat(".").concat(witches[third]).concat(".").concat(witc hes[second]).concat(".").concat(witches[sixth]).concat(".").concat(witches[3]).conc at(".").concat(witches[fourth]); Index dari array tersebut adalah variable-variable integer yang diberikan diatasnya, jadi jika kita ingin mengetahui password kita harus menyelesaikan teka- teki integer terlebih dahulu. Int second = 3 – 3 = 0 Int third = ( 3/3 ) + second = 1 + 0 = 1 Int fourth=( third + third ) – second = ( 1 + 1 ) – 0 = 2 Int fifth = 3 + fourth = 3 + 2 = 5 Int sixth = (fifth + second ) – third = ( 5 + 0 ) -1= 4 Jangan lupa ada concat(“.”) yang menambahkan . (titik) diantara setiap string. String password akan menjadi : dismass.ogg.weatherwax.aching.nitt.garlick

Pada MainActivity ada function bernama buttonClick yang menerima sebuah input berupa string lalu menjalankan fungsi getflag dari FlagstaffHill setelah tombol diklik.

Setelah itu saya coba menginput password yang sudah didapatkan lalu mengklik tombol.


Dengan seketika app tersebut mengeluarkan flagnya, yaitu Flag: picoCTF{what.is.your.favourite.colour}


Thank you for reading!