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:
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
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]
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
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} .