Reverse Engineering
Count the Flag but Easier (331 pts)🥇
Reinvent the Wheel (499 pts)🥇
Flaggy Bird V2 (500 pts)🥇
Count the Flag but Easier (331 pts)
Description
-
Solution
Diberikan file txt, berikut isinya
Tujuannya jelas, jadi mencari tahu nilai akhir dari fungsi(). Disini kami lakukan konversi secara menual, karena kode assemblynya terhitung pendek. Berikut hasil konversi dari asm ke python
Flag : NCW22{18612224}
Reinvent the Wheel (499 pts)
Description
-
Solution
Diberikan file elf 64 bit. Kami membukanya menggunakan IDA
Pada start terlihat ada pemanggilan fungsi init dan fungsi init mengeksekusi fungsi anti debug
Jadi lakukan bypass terhadap pengecekan debug tersebut ketika melakukan dynamic analysis dengan gdb.
Setelah bypass maka kita akan masuk ke fungsi main.
Terlihat pada IDA terdapat anti dissasembly pada fungsi main. Maka kita perlu lakukan sedikit dynamic analysis untuk ini.
Setelah masuk fungsi main lakukan next instruction sampai masuk ke alamat yang tidak bisa disassembly pada IDA. Jika sudah, cek instruksi pertama kali yang bisa di disassembly pada main (GDB) di alamat yang tidak bisa di disassembly pada IDA.
Terlihat pada 0x5555555553f6 sudah bisa didissassembly dengan benar, maka convert ke assembly mulai dari address tersebut lalu create new function pada address tersebut.
Langkah selanjutnya analisis fungsi pengecekan, terlihat bahwa terdapat fungsi swap yang dilakukan pada algoritma diatas. Jadi karena algoritmanya hanya swap, maka kita bisa lakukan pemetaan dengan cara menginputkan nilai yang berbeda sebesar 30 bytes dan set breakpoint pada 0x017CE .
Berikut solver yang kami gunakan untuk mendapatkan input yang valid.
Flag : NCW22{use_string_h_is_better_i_guess}
Last updated