Encoding
Encoding adalah mengkodekan informasi dalam bentuk lain. Jika encoding ini niatnya untuk menyembunyikan/merahasiakan sesuatu, maka namanya adalah encryption.
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