[Internetwache CTF 2016]: Rev60 – File Checker

Original Write up : https://github.com/jmazzola/CTFs/tree/master/Internetwache%20CTF%202016/Reversing/Rev60%20-%20File%20Checker

File : https://github.com/jmazzola/CTFs/blob/master/Internetwache%20CTF%202016/Reversing/Rev60%20-%20File%20Checker/rev60.zip

Saya buka file tersebut di IDA pro dan membuka pseudo codenya.

Di dalam codingan ini, for tersebut akan melakukan looping sebanyak 15x dimana dia melakukan looping terhadap function sub_40079C. Kita buka pseudo code di function sub_400790C.

Di dalam function sub_400790C ini ada 15 integer yang menyimpan angka-angka dan terdapat sebuah rumus di bawahnya.

v2 = (*(&v4 + a1) + *a2) % 4919;   à   v2 = (v4[a1] + *a2) % 4919

a1 di sini merupakan nilai i dari looping for yang ada di function main.

Kita sudah mengetahui bahwa default huruf pertama dan kedua dari flag tersebut adalah I dan W, maka kita dapat mencobanya dengan huruf I terlebih dahulu untuk mendapatkan rumus yang dapat digunakan untuk mencari huruf-huruf selanjutnya.

Decimal dari huruf I adalah 73, v4[0] = 4846

V2 = (4846 + 73) % 4919 à v2 = 0

Kita telah menemukan rumus baru yaitu à (v4[i] + *a2) % 4919 = 0

Untuk mencari *a2 = 4919 – v4[i] (karna hasil dari v4[i] + *a2 harus = 4919 untuk menghasilkan 0)

Flag = IW{FILE_CHeCKa}

Leave a Reply

Your email address will not be published. Required fields are marked *