Anda di halaman 1dari 4

Write-up CTF Seleksi Compfest8

Oleh Rakha Kanz Kautsar

Crypto100 : Supposedly Undecryptable Cryptography


File cry50.zip berisi dua buah file, yaitu enc.py dan flag.enc . Teknik enkripsi yang digunakan
dalam file enc.py menggunakan metode xor dengan key dari md5(seed). Jadi, seharusnya setelah kita
mendapat seednya, kita dapat melakukan xor sekali lagi untuk mendapat dekripsinya, karena xor
reversible.
Sekarang, mari kita lihat isi file enc.py , terutama bagian method enkripsinya:
def encrypt(data):
encrypted = ''
idx = 0
seed = strftime("%Y-%m-%d %H:%M:%S ") + format(random.getrandbits(20),
'020b')
md5hash = md5.new()
md5hash.update(seed)
key = md5hash.hexdigest()
for c in data:
encrypted += chr(ord(c) ^ ord(key[idx]))
idx += 1
if idx >= len(key) : idx = 0
return encrypted, key

Dapat kita lihat bahwa seed yang digunakan adalah YYYY-MM-DD HH:MM:SS [random 20 bit] .
Untuk waktu yang digunakan saat menggenerate file terenkripsi, dapat didapat dengan melihat atribut
date modified, dengan linux:
$ stat flag.enc
...

Access:
Modify:
Change:
Birth:

2016-02-17 23:56:40.205223993 +0700


2016-01-21 20:34:42.000000000 +0700
2016-02-17 23:37:54.341201326 +0700
-

Terlihat bahwa last modified dari file ini yaitu pada 2016-01-21 20:34:42 . Selanjutnya untuk bit
random dengan panjang 20, dapat kita lakukan bruteforce sebanyak 2^20. Berikut snippet kode dekripsi
yang bisa digunakan:
def decrypt(data):
for bit in xrange(0, 2**20):
decrypted = ''
idx = 0
seed = "2016-01-21 20:34:42 " + format(bit, '020b')
md5hash = md5.new()
md5hash.update(seed)
key = md5hash.hexdigest()
for c in data:
decrypted += chr(ord(c) ^ ord(key[idx]))
idx += 1
if idx >= len(key) : idx = 0
if "CFCTF" in decrypted:
print decrypted

Kemudian tak lama, flag CFCTF{wh3N_1n_doUbT_bRut3foRCe}


akan muncul di entri kedua.

Forensic100
Note: 18 February 2016, 12:06 AM, soal pada website CTFnya sudah ditutup :( , jadi write-up
selanjutnya tidak bisa secara detail
Dengan menggunakan informasi dari The Structure of PKZIP file dan Zip (file format), dapat diidentifikasi
struktur zip yang diberikan, kira-kira seperti ini:
[local file header of flag.txt]
[data flag.txt]

[end of central directory record]

Terlihat bahwa file tersebut kehilangan central directory file header yang mendeskripsikan metadata
spesifik file tersebut. Dengan mengikuti local file header, kita dapat merekonstruksi ulang central
directory file header ini dengan sedikit penyesuaian. Setelah itu, akhirnya file zip dapat dibuka.

Web100
Note: 18 February 2016, 12:17 AM, soal pada website CTFnya sudah ditutup :( , jadi write-up
selanjutnya tidak bisa secara detail
Vulnerability pertama pada website ini yang dapat dideteksi yaitu ketika kita membuka direktori /img/
dimana akses ke folder ini tidak dibatasi, sehingga kita dapat melihat file Capture.PNG yang berisi
screenshot pada machine si developer. Screenshot tersebut memberitahu kita banyak informasi, yang
patut dicatat adalah adanya /config/ , dashboard.php , dan forget.php .
Di dalam folder

yang lagi-lagi tidak dibatasi aksesnya, terdapat sebuah* file


compfestr0ck.sqlite yang jika kita coba buka dengan SQLite Browser menunjukkan bahwa file
tersebut corrupt .
/config/

Pada tahap ini, salah satu cara yang dapat digunakan yaitu dengan meneliti file sqlite ini dengan
melihat ascii hexdumpnya, terlihat jelas username dan email admin yang nantinya akan kita pakai.
Cara lainnya, kita dapat mencoba mengunjungi dashboard.php , dimana kita disajikan oleh form login,
disertai dengan link ke forget.php yang akan kita gunakan untuk mendapat akses ke dashboard.
Untuk mendapatkan password dengan fitur forgot password, kita diharuskan memberikan username dan
email user tersebut. Jika kita teliti lagi, username dapat kita dapatkan dari home, dimana post
menyertakan username si author. Salah satu username yang dapat kita pakai adalah leet . Jika kita
lihat source code halaman web tersebut,
...
<!-This website is intended for the better future of humankind
@creator Leet Steamlocomotive
@email
leetmeoff@gmail.com
-->
...

Ternyata leet adalah creator website ini, dan ia dengan pintarnya mencantumkan emailnya,
leetmeoff@gmail.com . Dengan fitur forgot password, kita dapatkan bahwa passwordnya adalah
leetLEET1337 . Sekarang kita bisa masuk ke dashboard.
Di dalam dashboard, terdapat fitur search user by username, karena kita tidak tahu username admin,
fitur ini terlihat tidak berguna, namun ternyata form yang diberikan memiliki vulnerability terhadap SQL
Injection. Kita masukkan query ' OR 1=1 -- dan kita akan dapatkan tabel semua user yang ada,
dengan username dan emailnya. Kita dapat admin memiliki username iniusernamenyaadmin dan
email emailnyaadmin@compest.web.id . Dengan fitur forgot password sekali lagi, kita dapatkan
passwordnya untukcompfestyanglebihbaik . Login dengan akun admin, dan masukkan database
filename,
compfestr0ck.sqlite
dan
password
admin,
untuk
mendapatkan
flag
CFCTF{there_are_so_many_ways_to_exploit_web} .

Anda mungkin juga menyukai