Monday, 10 March 2025

picoCTF – droids3

A screenshot of a computer

Description automatically generated


Tools yang dibutuhkan untuk menyelesaikan soal ini adalah :

  1. Jadx

  2. Android studio

  3. Apktool

  4. Jarsigner



Langkah pertama, jalankan program three.apk menggunakan jadx


A screenshot of a computer

Description automatically generated


Cek file FlagstaffHill, lalu kita akan fokus pada function FlagstaffHill


A screen shot of a computer code

Description automatically generated


Pada function getFlag, variable flag memiliki nilai yaitu nope(input), dimana nope(input) jika dijalankan hanya akan menghasilkan “don’t wanna”.


Jika kita liat pada function yep, sepertinya function ini yang memiliki potensi adanya flag, lalu bagaimana caranya?


Mari kita lakukan decompile dulu pada aplikasi three.apk menggunakan apktools

A screen shot of a computer

Description automatically generated


Lalu penulis melakukan akses folder “three” menggunakan android studio, dan membuka file FlagstaffHill.smali


A screenshot of a computer program

Description automatically generated





Disini kita akan merubah function nope menjadi yep, silahkan diperhatikan detailnya


A screenshot of a computer program

Description automatically generated


After edit 


A screenshot of a computer program

Description automatically generated



Simpan lalu kita akan compile menjadi file baru dengan nama new_three.apk


“apktool b three -o new_three.apk”


A screenshot of a computer program

Description automatically generated



Sekarang kita install aplikasi baru untuk mendapatkan flagnya.




Ooopsiee, gagal menginstall karna tadi kita melakukan compile dari file hasil decompile, maka aplikasi baru ini tidak memiliki signature yang valid, makanya tidak bisa diinstal.



Sekarang kita akan membuat sign untuk aplikasi new_three.apk


A screen shot of a computer

Description automatically generated


new_three.jks adalah nama file untuk sign aplikasi baru

new-key adalah alias untuk kunci sign kita.



Penulis akan memasukan sign baru yang dibuat kedapalam aplikasi new_three.apk agar aplikasi bisa diinstal.


A screenshot of a computer program

Description automatically generated


Mari kita coba install aplikasi new_three.apk pada perangkat emulator kita


A black background with white text

Description automatically generated


Yupp success, waktunya mendapatkan flag(?) I think hehehe


A screenshot of a phone

Description automatically generated


Gotchaaaa :D


Read More

Friday, 7 March 2025

picoCTF - droids2

A screenshot of a computer

Description automatically generated


tools yang digunakan untuk menyelesaikan soal ini adalah :

  1. JADX

  2. Android studio



Buka file two.apk menggunakan jadx


A screenshot of a computer

Description automatically generated



Setelah itu kita buka file FlagstaffHill


A screenshot of a computer

Description automatically generated


Disini mari kita untuk focus pada function getFlag,


public static String getFlag(String input, Context ctx) {
        String[] witches = {"weatherwax", "ogg", "garlick", "nitt", "aching", "dismass"};
        int second = 3 - 3;
        int third = (3 / 3) + second;
        int fourth = (third + third) - second;
        int fifth = 3 + fourth;
        int sixth = (fifth + second) - third;
        String password = "".concat(witches[fifth]).concat(".").concat(witches[third]).concat(".").concat(witches[second]).concat(".").concat(witches[sixth]).concat(".").concat(witches[3]).concat(".").concat(witches[fourth]);
        return input.equals(password) ? sesame(input) : "NOPE";
    }



pertama mari kita fokus pada array witches, array ini memiliki indeks sebagai berikut,


  1. weatherwax

  2. ogg

  3. garlick

  4. nitt

  5. aching

  6. dismass



int second = 3 - 3;
int third = (3 / 3) + second;
int fourth = (third + third) - second;
int fifth = 3 + fourth;
int sixth = (fifth + second) - third;


kode ini berguna untuk menghitung indeks dari array diatas, setelah dihitung maka susunannya akan menjadi:

  • second = 0

  • third = 1

  • fourth = 2

  • fifth = 5

  • sixth = 4



sekarang kita fokus kepada baris kode

String password = "".concat(witches[fifth]) //witches[5] : dismass

.concat(".")

.concat(witches[third]) //witches[1] : ogg

.concat(".")

.concat(witches[second]) //witches[0] : weatherwax

.concat(".")

.concat(witches[sixth]) //witches[4] : aching

.concat(".")

.concat(witches[3]) // witches[3] : nitt, index ke 3 sudah langsung ada jika kalian sadar, ini merupakan clue tambahan dari pembuat soal kepada kita

.concat(".")

.concat(witches[fourth]); //witches[2] : garlick




Silahkan disusun kalimat diatas agar menjadi sebuah password

A screenshot of a phone

Description automatically generated


Read More