View
423
Download
42
Category
Preview:
Citation preview
7/24/2019 Soal Cyber Jawara
1/22
[SOAL 1][Qer]
NAMA TIM : [CSI Oryza]
ZONA : [2 Jawa & Madura]
Jumat 9 Oktober 2015
Capture The Flag Report
7/24/2019 Soal Cyber Jawara
2/22
1. Executive Summary
Memecahkan QR Code Puzzle.
2. Technical Report
File Qer.zip berisikan 30 gambar berekstensi pngroot@knight:~/CTF/cj2015/Qer# ls
0.png 12.png 15.png 18.png 20.png 23.png 26.png 29.png 4.png 7.png10.png 13.png 16.png 19.png 21.png 24.png 27.png 2.png 5.png 8.png11.png 14.png 17.png 1.png 22.png 25.png 28.png 3.png 6.png 9.png
Setiap file gambar tersebut berisikan QRcode yang dapat di-decode. Setelah
dilakukan decoding tiap file. diperoleh data sebagai berikut:
0.png Oges Megono
1.png 0000000110111111010000000
2.png 0111110100100101010111110
3.png 0100010110001100110100010
4.png 0100010100101001110100010
5.png 0100010111010000010100010
6.png 0111110101011101010111110
7.png 0000000101010101010000000
8.png 11111111111101001111111119.png 0000010000010110001010101
10.png 1111101010111010000001101
11.png 1011010010100101110110111
12.png 1110111000001000100010110
13.png 1111010110101111001010110
14.png 0110011000010111111001001
15.png 0100100100011101000110101
16.png 0101101111010000000010011
17.png 0101110000110010000001110
18.png 1111111101111010011100111
19.png 0000000100000101010100110
20.png 0111110111101010011101101
21.png 0100010101100111000000110
22.png 0100010101010111100010010
23.png 0100010101010100001101110
24.png 0111110100011000101011011
7/24/2019 Soal Cyber Jawara
3/22
25.png 0000000101111000100000010
26.png Salah
27.png CJ(QR-Code)
28.png Flag is Slipknot
29.png Hidup BONGKAR
QR code dalam bentuk teks tersebut dapat dibaca dengan strong QR decoder
(https://github.com/waidotto/strong-qr-decoder).
Hasilnya:
$ sqrd.py qr.txt
CJ2015{e54y_Bin4ry_Cak!}
3. Conclusion
Flag: CJ2015{e54y_Bin4ry_Cak!}
https://github.com/waidotto/strong-qr-decoder7/24/2019 Soal Cyber Jawara
4/22
7/24/2019 Soal Cyber Jawara
5/22
[SOAL 2][CJ15]
Table of Contents
7/24/2019 Soal Cyber Jawara
6/22
Capture The Flag Report
1. Executive Summary
Reverse Engineering Linux Executable.
2. Technical Report
Diberikan sebuah file binary CJ15, yang merupakan ELF executable 32 bit, jika
dijalankan akan mengoutputkan Flag: [Aku Ada Di Mana Nih] yang sudah
diduga itu bukan flag, karena mengingat ini soal medium. lalu kami lakukan
dekompile menggunakan IDA Pro
terlihat pseudocodenya, bahwa terdapat kumpulan variable integer.
nilai dari variable itu kami susun menjadi array, lalu terlihat text Clue : 22 dari
hasil string file binary
7/24/2019 Soal Cyber Jawara
7/22
kami lakukan XOR string hasil convert dec2char dengan angka 22.
>>> pwd
[121, 91, 35, 90, 34, 123, 115, 66, 32, 119, 120, 66, 37,120, 47, 0]>>> strpwd = ''>>> for i in pwd:... strpwd += chr(i)...>>> ''.join([chr(ord(x) ^ 22) for x in strpwd])'oM5L4meT6anT3n9\x16'
diperoleh text oM5L4meT6anT3n9, lalu kami coba input ke file binary, lalu file
tersebut memberikan output Yuhuuuu Ketemu Kang yang berarti kata tersebut
merupakan flag.
3. Conclusion
Flag dari challenge adalah CJ2015{oM5L4meT6anT3n9}
7/24/2019 Soal Cyber Jawara
8/22
[SOAL 3][Old_but_not_obsolete]
7/24/2019 Soal Cyber Jawara
9/22
Table of Contents
Capture The Flag Report
1. Executive Summary
Mechanical (pinwheel) calculation.
2. Technical Report
file Old_but_not_obsolete.mov adalah video berdurasi 1 menit 32 detik. Berisikan
video tentang hacktivist anonymous dan video mengenai penghitungan/kalkulasi
numerik menggunakan mesin penghitung mekanik pinwheel.
Dengan pesan submit the calculation result pada akhir video, memberikan kami
clue bahwa task pada challenge ini adalah menghitung hasil dari pengitungan
yang ditayangkan pada video tersebut.
Menggunakan tool yang diperoleh dari http://www.davdata.nl/math/pinwheel.html
bernama pinwheel.exe maka kami mengikuti urutan penghitungan dengan
keterangan sebagai berikut
nilai awal (operand) : 0524813609langkah pengoperasian:
putar tuas ke atas 7 kali geser bagian hasil ke kanan 1 kali putar tuas ke atas 3 kali geser bagian hasil ke kanan 1 kali putar ke atas 3 kali geser bagian hasil ke kanan 1 kali
putar tuas ke atas 1 geser bagian hasil ke kiri 2 kali putar tuas ke bawah 1 kali
Menggunakan tool pinwheel maka diperoleh hasil seperti screenshot dibawah ini.
12 digit hasil perhitungan merupakan flag dari challenge.
http://www.davdata.nl/math/pinwheel.html7/24/2019 Soal Cyber Jawara
10/22
Sesuai informasi di video, flag-nya adalah hasil dari operasi perhitungan
tersebut, yaitu 0696427659143. Namun ternyata tidak perlu 0 di depan sehingga
flag yang benar yaitu 696427659143.
3. ConclusionFlag: CJ2015{696427659143}
7/24/2019 Soal Cyber Jawara
11/22
[SOAL 4][HASH]
7/24/2019 Soal Cyber Jawara
12/22
Table of Contents
Capture The Flag Report
1. Executive Summary
Reversing fungsi kriptografi.
2. Technical Report
Diberikan suatu ciphertext:
..::CJ2015 Decrypt Hash::..
Pl@ll0d(mSvGjeecPMtGhR?MdA1d
Te#FO+m%O:.eKELaEa
~k!T9lgK7~lg`u_8Ml-TP&
Dan suatu fungsi enkripsi dalam bahasa Ruby:
#!/usr/bin/ruby
flag= ???str = "0123456789abcdef"chr = "!\"#%&()+,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[^_`abcdefghijklmnopqrstuvwxyz~"bin = "0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 10101011 1100 1101 1110 1111"flags = flag.scan /\w/hh=flags.map{|h| h.unpack('H*')}.join()a=hh.scan /\w/b=a.map{|x|str[bin.index(bin[str.index(x)*5,4].reverse)/5,1]}.joinc=[]for y in 0..(b.length/2)
c.push(b[y*2,2].hex.chr.encode('utf-8','iso-8859-1'))end
i=chr.length-1d=c[0,c.length-1].join()f=[]e=d.split("").each do |z|
f.push(chr[rand(0..i),1] + z + chr[rand(0..i),1])end
p f.join()
7/24/2019 Soal Cyber Jawara
13/22
Misalnya string flag diset aaaaaaaa. Jika dijalankan berkali-kali, terdapat suatu
pola:
$ ruby test.rb
"DhgXh>AhVih@)hZIhhihSlhw"$ ruby test.rb"+hjEh(&h!mh)%he5hiYh.Fh#"$ ruby test.rb"nh^phuVhIXhJ&hXKh`6hw-hM"$ ruby test.rb"Bh.)hWphWn7Pag3ig4eOKmYocj?k1
7/24/2019 Soal Cyber Jawara
14/22
em
kgg-
Dengan script Python berikut ini dilakukan mapping tersebut:
# -*- coding: utf-8 -*-
import sys
clean = u"($,\"*&.!)%-#+'/hdlbjfnaiemckgo"chars =u"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw
xyz_"
dict = {}
for j in range(len(clean)): dict[clean[j]] = chars[j]
soal1 = u"ldeh"soal2 = u"em"soal3 = u"kgg-"
for s in soal1: sys.stdout.write(dict[s])
print ""
for s in soal2: sys.stdout.write(dict[s])
print ""
for s in soal3: sys.stdout.write(dict[s])
Dijalankan dan didapatkan string yang merupakan flagnya:
$ python solve.py
cyb3rj4War4_j4k4rt4_
7/24/2019 Soal Cyber Jawara
15/22
m3n4nt1KU
3. Conclusion
Flag dari challenge adalah CJ2015{cyb3rj4War4_j4k4rt4_m3n4nt1KU}
7/24/2019 Soal Cyber Jawara
16/22
[SOAL 5][TxtImg]
7/24/2019 Soal Cyber Jawara
17/22
Table of Contents
Capture The Flag Report
1. Executive Summary
Plotting titik-titik koordinat
2. Technical Report
file img.txt yang telah didownload berisikan data sebagai berikut:
root@knight:~/CTF/cj2015# cat img.txt
SALAM JEEDOOOORRRRRR !!!KETEMU LAGI DEH DENGAN KANG SLAMET !!!Clue: PNG
1,3 1,4 1,5 1,6 2,2 2,7 3,2 3,7 4,3 4,66,6 7,7 8,2 8,7 9,2 9,3 9,4 9,5 9,6 11,311,7 12,2 12,6 12,7 13,2 13,5 13,7 14,3 14,4 14,717,3 17,4 17,5 17,6 18,2 18,7 19,3 19,4 19,5 19,622,3 22,7 23,2 23,3 23,4 23,5 23,6 23,7 24,7 26,226,3 26,4 26,6 27,2 27,4 27,7 28,2 28,4 28,7 29,229,5 29,6 31,4 32,2 32,4 32,6 33,1 33,3 33,5 33,734,1 34,7 36,5 37,4 37,6 37,8 38,4 38,6 38,8 39,439,5 39,6 39,7 42,3 42,4 42,5 42,6 43,2 43,7 44,344,4 44,5 44,6 47,3 47,4 47,5 47,6 48,2 48,7 49,349,4 49,5 49,6 51,5 51,6 52,4 52,7 53,4 53,6 54,2
54,3 54,4 54,5 54,6 54,7 56,8 57,8 58,8 59,8 60,861,2 61,3 61,4 61,5 61,6 61,7 62,4 62,7 63,4 63,764,5 64,6 66,4 66,5 67,6 67,8 68,6 68,8 69,4 69,569,6 69,7 71,3 71,6 72,2 72,7 73,2 73,4 73,7 74,374,5 74,6 76,8 77,8 78,8 79,8 80,8 82,7 83,8 84,284,4 84,5 84,6 84,7 86,5 86,6 87,4 87,7 88,4 88,789,5 89,6 91,5 91,7 92,4 92,5 92,7 93,4 93,6 93,794,4 94,6 98,3 98,4 98,5 98,7 102,1 102,7 103,1 103,3103,5 103,7 104,2 104,4 104,6 105,4
Dengan memperhatikan clue yaitu PNG, kami mengasumsikan bahwa angka-angka yang tertera di bawah clue merupakan pasangan dari titik-titik koordinat
x,y.
Dengan menggunakan spreadsheet seperti Microsoft Excel, kami dapat
melakukan plotting terhadap titik-titik tersebut ke dalam grafik (scatter plot).
Namun ternyata axis Y terbalik, maka dilakukan pengaturan sehingga tampak
seperti ini:
7/24/2019 Soal Cyber Jawara
18/22
3. Conclusion
Flag dari challenge adalah CJ2015{g00d_by3_jos!}
7/24/2019 Soal Cyber Jawara
19/22
[SOAL 6][library]
7/24/2019 Soal Cyber Jawara
20/22
Table of Contents
Capture The Flag Report
1. Executive Summary
Reversing script Python yang telah di-compile.
2. Technical Report
Diberikan suatu executable (cj2015.exe) dan beberapa file lain. Kami hanya
fokus ke executable tersebut. Ketika di-strings, tampak bahwa file EXE tersebut
adalah hasil kompilasi script Python menjadi EXE.
...getlinetorig_getline(C:\Python27\lib\site-packages\py2exe\boot_common.pyt
,Cyber Jawara Onlines===================cchr(a.pytscramblejointzip(a.pytflippityPassword: i
raw_inputtlentFalsetordR+password(...
Untuk melakukan perubahan dari EXE Python menjadi .pyc, digunakan tools
unpy2exe (https://github.com/matiasb/unpy2exe ). Terdapat file a.py.pycyang
merupakan script Python yang telah dikompilasi. Untuk melakukan dekompilasi
file .pyc dapat digunakan tools uncompyle2
(https://github.com/wibiti/uncompyle2 ).
Dihasilkan script Python berikut:
# 2015.10.09 18:20:20 WIB# Embedded file name: a.pyprint 'Cyber Jawara Online'
https://github.com/wibiti/uncompyle2https://github.com/matiasb/unpy2exe7/24/2019 Soal Cyber Jawara
21/22
print '==================='
def scramble(x): return [ chr(i) for i in x ]
def flippity(x): return ''.join([ ''.join(i) for i in zip(x[1::2],x[0::2]) ])
def go(): password = raw_input('Password: ') if len(password) != 22: return False if ord(password[11]) != 89 or ord(password[5]) != 69 orord(password[16]) != 112 or ord(password[12]) != 111 or
ord(password[18]) != 64 or ord(password[21]) != 33 orord(password[13]) != 117 or ord(password[9]) != 121 orord(password[14]) != 114 or ord(password[17]) != 64 orord(password[7]) != 106 or ord(password[1]) != 36 orord(password[15]) != 95 or ord(password[19]) != 115 orord(password[20]) != 115 or ord(password[3]) != 121 orord(password[10]) != 95 or ord(password[8]) != 48 orord(password[6]) != 110 or ord(password[2]) != 97 orord(password[4]) != 95 or ord(password[0]) != 101: return False return flippity(scramble([74,
67, 48, 50, 53, 49, 103, 123, 48, 48, 66, 100,
101, 121, 97, 74, 75, 99, 125, 33]))
7/24/2019 Soal Cyber Jawara
22/22
print go()# okay decompyling a.py.pyc# decompiled 1 files: 1 okay, 0 failed, 0 verify failed# 2015.10.09 18:20:21 WIB
Langsung saja, kita hilangkan baris-baris yang melakukan pengecekan password
(if len password, if ord password dan sebagainya). Jadi, fungsi go hanya berisi:
def go(): password = raw_input('Password: ') return flippity(scramble([74, 67, 48, 50,
53, 49, 103, 123, 48, 48, 66, 100, 101, 121, 97, 74, 75, 99, 125, 33]))
Begitu dijalankan, langsung keluar string flag-nya:
$ python a.py
Cyber Jawara Online
===================CJ2015{g00dByeJacK!}
3. Conclusion
Flag dari challange adalah CJ2015{g00dByeJacK!}
Recommended