Writeup Encang Maman Belajar Ngoding

Compfest 11 Quals

Posted by rmn0x01 on Thursday, October 31, 2019

Encang Maman belajar ngoding. Dia mengirim pesan untuk kalian. Dapatkah kalian membaca kode dari Encang Maman?

Intro

File yang diberikan berupa

$ file pesan.zip 
pesan.zip: Zip archive data, at least v2.0 to extract

$ unzip pesan.zip 
Archive:  pesan.zip
  inflating: pesan2                  
  inflating: pesan1                  

$ file *
pesan1:    data
pesan2:    data
pesan.zip: Zip archive data, at least v2.0 to extract

TLDR

  1. Konversi UTF-16
  2. Konversi UTF-32
  3. Get the flag

Full Steps

Kedua file (pesan1 dan pesan2) ketika dibaca hanya menampilkan data yang tidak dapat dipahami.

Hint yang diberikan berupa:

2 file (UTF-16; UTF-32) tersebut adalah 2 file yang ditulis dengan encoding tertentu, dengan penanda encoding yang dihapus

Pencarian menggunakan Google dengan keyword encoding utf-16 linux mengembalikan referensi [1] yang kemudian dicoba pada file soal.

$ iconv -f UTF-16LE -t UTF-8 pesan1 -o flag1
$ strings flag1
COMPFEST11{p14Y1n6_

Didapatkan potongan flag pertama. Sedangkan untuk pesan2, sesuai dengan hint akan dilakukan konversi dari UTF-32

$ iconv -f UTF-32LE -t UTF-8 pesan2 -o flag2
$ strings flag2
wITH_un1C0D3_uWu}

Flag

COMPFEST11{p14Y1n6_wITH_un1C0D3_uWu}

Explanation

Berdasarkan referensi [2], tertulis bahwa

The encoding used by Windows for Unicode is UTF-16, to be specific, UTF-16LE (Little Endian). Linux uses UTF-8 to encode Unicode. A file encoded with Unicode can optionally contain a Byte Order Mark(BOM) which is a special magic number at the start of file. Byte Order Mark(BOM) is optional for UTF-8, but mandatory for UTF-16 as per Unicode standard. So, Linux does not use BOM for Unicode files as it uses UTF-8. But Windows applications look for BOM in Unicode encoded file as they use UTF-16.

artinya secara singkat adalah

Windows uses UTF-16LE with BOM, and Linux uses UTF-8 without BOM.

sehingga harus dilakukan konversi terlebih dahulu agar flag dapat dibaca

References

  1. https://stackoverflow.com/questions/17287713/using-iconv-to-convert-from-utf-16le-to-utf-8
  2. http://murty4all.blogspot.com/2016/12/conversion-between-utf-16-utf-8-encoded.html