soal cyber jawara

Upload: agus-setiawan-bdx-azzam

Post on 21-Feb-2018

424 views

Category:

Documents


42 download

TRANSCRIPT

  • 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-decoder
  • 7/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.html
  • 7/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/unpy2exe
  • 7/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!}