Encoding

Encoding adalah mengkodekan informasi dalam bentuk lain. Jika encoding ini niatnya untuk menyembunyikan/merahasiakan sesuatu, maka namanya adalah encryption.

encode-example.png

Character Set

Perlu diketahui bahwa tiap huruf sebenarnya memiliki representasi bilangan di memori komputer. Di sistem sederhana, kita biasanya memakai ASCII atau encoding spesifik tiap negara. Di sistem modern, kita menggunakan Unicode.

Pemetaan sebuah karakter menjadi bilangan (atau sebaliknya) disebut dengan character encoding. Yang paling dasar adalah ASCII. Anda bisa melihat tabel ASCII di Wikipedia dan berbagai website lain, atau Anda bisa mencetaknya sendiri dengan fungsi chr() di berbagai bahasa.

Pemahaman mengenai Unicode diperlukan karena kadang bisa digunakan untuk bypass filtering XSS dan SQL Injection.

Representasi heksadesimal

Silakan pelajari tentang heksadesimal (basis bilangan 16) di wikipedia.

Tools yang berhubungan dengan ini: xxd, hexdump

Contoh: representasi heksadesimal sebuah file:

 cat namafile | xxd -p

Mengembalikan dari hex ke bentuk semula:

 echo -n '4141' | xxd -r -p

URL encoding

Sesuai namanya, ini digunakan untuk encoding URL, biasanya dalam bentuk %XX di mana XX adalah dua digit heksadesimal. Selain itu kadang spasi diencode menjadi karakter plus (+).

Base64 dan Base lain

Encoding Base64 dipakai untuk mengubah representasi biner menjadi teks. Contoh pemakaian ini adalah dalam email dan upload HTML.

Selain base64, ada beberapa base lain yang cukup umum: Base32 (ada RFC-nya, dipakai TOTP dalam 2FA), Base36 (dipakai oleh banyak website), Base58 (dipakai bitcoin), Base85 (Adobe PDF).

Contoh Soal

So Basic

Soal encoding sangat sederhana

http://blog.rentjong.net/2014/07/pwnium-2014-misc75-so-basic.html

Breakme

Base64 plus Bzip2

http://blog.rentjong.net/2014/07/pwnium-ctf2014-crypto75-breakme.html

Barmixer Bot

Injeksi command dengan base64

http://blog.rentjong.net/2014/10/hacklu-ctf-2014-barmixer-bot.html

Flare On 2015 Challenge 5

Base64 yang tidak standar

https://github.com/yohanes/write-ups/tree/master/flare-2015/flare5

Copyright © 2009-2018 Yohanes Nugroho