skip to content
Yupy Syntax

HackTheBox - SeeTheSharpFlag

/ 3 min read

Last Updated:

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

alt text

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

alt text

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

alt text

Setelah itu kita mengcoba decompille source code Apk dengan apktool

alt text

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

alt text

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

alt text

Mencoba membaca dll file tersebut

alt text

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

alt text

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

alt text

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

alt text

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

alt text

Mencoba memodifikasi dengan dnSpy

alt text

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

alt text

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

alt text alt text

Build module nya dengan apktool

alt text

Verifikasi signer menggunakan jarsigner

alt text

Mengganti nama apk dengan zipalign

alt text

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

alt text

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

alt text

Menjadi

alt text

Mencoba mengubahnya lagi

alt text

Menjadi

alt text

Success Crack

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

alt text

Submit Flag in HackTheBox

alt text