HackTheBox - SeeTheSharpFlag WriteUps

HackTheBox SeeTheSharpFlag WriteUps

Saya telah membuat aplikasi verifikasi kata sandi. Jika saya dapat mengingat kata sandinya, aplikasi akan memberi tahu saya bahwa itu benar. Lihat apakah Anda dapat menebak kata sandi saya.

Berikut ini tampilan dibawah bila aplikasi apk tersebut dibuka

image

Setelah itu apa yang bisa lakukan dengan ini, kita mencoba menginputkan random password tetapi aplikasi tersebut menolak dengan tampilan seperti gambar

image

Selanjutnya kita membuka jadx ternyata source code yang digunakan ini menggunakan Xamarin. Kita dapat melihat aplikasi ini dibangun di atas Xamarin , platform sumber terbuka untuk membangun aplikasi modern dan berkinerja baik untuk iOS, Android, dan Windows dengan .NET

image

Setelah itu kita mengcoba decompille source code Apk dengan apktool

image

Dari source code apk tersebut terdapat folder assemblies dan disini mencoba melihat source code dll dari SeeTheSharpFlag.dll

image

Kita membukanya dengan dnSpy dan ternyata file tersebut tidak bisa dibuka secara langsung

image

Mencoba membaca dll file tersebut

image

Untuk mendapatkan file dll yang dapat dibaca di dnspy, kita perlu mengekstrak dan membongkar panjang payload untuk mengetahui panjang payload dan kemudian LZ4 mendekompresi payload tersebut.

Kita mencoba menggunakan decompiler dari python yang didapat dari github Xamarin Decompres

image

Buka lagi dengan dnSpy dan kita mendapatkan source code dari dll tersebut dan coba ada hal apa yang menarik disini

image

Setelah mencari cari kita mendapatkan suatu modul button yang dimana ini mengarah pada click tombol pada Aplikasi

image

Dan Kita bisa melihat perbandingan string di sini, ini adalah nilai rahasia di aplikasi dan masukan kita

image

Mencoba memodifikasi dengan dnSpy

image

Kita bisa lihat setelah pemanggilan System.String::op_Equality , instruksi brfalse.s akan melompat ke ldarg.0 , yang merupakan rute sukses

image

Disini setelah kita ganti dengan value seperti gambar dibawah selanjutnya kita save module tersebut

image image

Build module nya dengan apktool

image

Verifikasi signer menggunakan jarsigner

image

Mengganti nama apk dengan zipalign

image

Setelah itu kita mencoba membuka aplikasi tersebut. disini bila kita menginputkan 1234 atau apapun input itu kita mendapatkan flag seperti gambar dibawah dan disini berhasil kita mengganti source code yang ada pada dll

image

Tetapi disini dimana letak Flag HTB nya? Karena kita hanya merubah route dari fail menjadi success, flag disimpan di variabel streamReader yang tidak tercetak. Idenya adalah kita akan mengubah streamReader.ReadToEnd() menjadi array acak.ReadToEnd() dalam perbandingan karena ReadToEnd akan membaca semua karakter dari posisi saat ini hingga akhir aliran, jika kita membaca dalam perbandingan maka kita tidak dapat membaca lagi.

Kemudian kami menempatkan streamReader.ReadToEnd() ke dalam pesan Output di rute sukses, dan terakhir memodifikasi aliran untuk selalu datang ke rute sukses jika salah memasukkan rahasia/kata sandi.

Selanjutnya kita mencoba mengganti valuenya seperti digambar

image

Menjadi

image

Mencoba mengubahnya lagi

image

Menjadi

image

Setelah selesai Simpan ke modul baru, timpa dll di folder dekompilasi, repacking, sign, zipalign, install. Dan bila kita menginputkan random value lagi di aplikasi kita akan mendapatkan Flagnya

image image