[CyBRICKS19] – Oldman Reverse

Pada CyBRICS CTF 2019 terdapat soal bernama ‘Oldman Reverse’, lalu disertakan file attachment dalam bentuk assembly code. Berikut merupakan assembly yang diberikan,

Setelah saya melakukan analisa pada code tersebut, ternyata assembly tersebut merupakan code Assembly PDP11 yang terlihat dari syntax yang dipakai pada code tersebut (seperti BEQ, SWAB, BR.dll). Setelah dilakukan analisa lebih lanjut, ternyata alur program ini berjalan seperti berikut:

Didapatkan gambaran flow program assembly tersebut, lalu saya mencoba melakukan coding python untuk mendapatkan index flag yang terdapat dalam buffer MSG. Berikut code pertama yang dicoba,

Lalu saya mencoba run code tersebut untuk mengetahui hasilnya, dan didapatkan seperti ini

Potongan template flag ‘cybrics{‘ didapatkan dan error ‘Index out of range’ didapatkan yang berarti nilai dari r2 terus bertambah tetapi nilai r2 menjadi lebih besar dari index MSG.

Ketika dilakukan analisa ulang pada code assembly dan code python, rupanya kita dapat melakukan modulus pada nilai r2 dengan total panjang dari MSG, sehingga r2 dapat terus bertambah, namun return valuenya pasti akan selalu kurang dari total panjang  MSG. Sehingga kita merubah sedikit code menjadi,

Hasilnya adalah:

 

 

Leave a Reply

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