RC3 CTF 2016 Writeup

この大会は2016/11/19 11:00(JST)~2016/11/21 14:00(JST)に開催されました。
今回もチームで参戦。結果は3340点で663チーム中38位でした。
自分で解けた問題をWriteupとして書いておきます。

What's your virus? (Trivia 20)

「once clicked mailing list unbootable virus」で検索したら、次のページに記載されていた。
http://www.hongkiat.com/blog/famous-malicious-computer-viruses/

ILOVEYOU

Horse from Tinbucktu (Trivia 30)

「Trojan horse Windows browser key logging form grabbing」で検索したら、次のページに記載されていた。
http://www.hacking-tutorial.com/hacking-tutorial/remote-administration-tool-zeus-botnet-rat/#sthash.dQ56P6EO.dpbs

Zeus

Salad (Crypto 100)

先頭がRC3に変換されることを想定して。数字含みで20シフトして復号する。

letters = '0123456789abcdefghijklmnopqrstuvwxyz'
length = len(letters)

cipher = '7sj-ighm-742q3w4t'

flag = ''
for i in range(len(cipher)):
    c = cipher[i:i+1]
    if c == '-':
        flag += c
    else:
        index = letters.find(c) + 20
        if index >= length:
            index = index - length
        flag += letters[index:index+1]

print flag.upper()
RC3-2016-ROMANGOD

Who's a good boy (web 100)

読み込んでいるdoge.cssを見ると、一番最後にフラグが書いてある。

.philarydufflebag{
 
/*hiya*/
/*compress your frontend*/
/*here's a flag :)*/
flag:RC3-2016-CanineSS
}
RC3-2016-CanineSS

Some Pang (Forensics 50)

全パケットのdata部の後半24バイトに2バイトずつ同じデータが繰り返されている。送受信で同じデータなので、片方のパケットだけ2バイトずつつなげBase64デコードし、ファイルに保存する。

#!/usr/bin/env python
from scapy.all import *

packets = rdpcap('somepang.pcap')

data = ''
for p in packets:
    if p['IP'].src == '192.168.1.1':
        data += p['Raw'].load[8:10]

with open('flag.jpg', 'wb') as f:
    f.write(data.decode('base64'))

f:id:satou-y:20161201230102j:plain

RC3-2016-PANG-ME-LIKE-ONE-OF-YOUR-FRENCH-GORILLAZ

Graphic Design (Forensics 200)

オブジェクトファイルをテキストエディタで開くと先頭に「Blender v2.78 (sub 0) OBJ File」と書いてある。・・ということでBlenderでこのオブジェクトファイルを開く。内容はステゴザウルスの3D画像。ステゴザウルスを非表示にすると、フラグが隠れていた。
f:id:satou-y:20161201230203p:plain

RC3-2016-St3GG3rz

Dirty Birdy (Forensics 400)

FTK Imagerでイメージファイルを開いてみると、secretfilesというフォルダがあるので、その配下を見てみる。document.txtには「password123」と書かれているので、どこかで使うのかもしれない。Workbook1.xlsx.gpgがあるので、このファイルがあやしい。とりあえずエクスポートする。
さらに探すと、.gnupgフォルダにsecring.gpg(秘密鍵リング)があるので、エクスポートして、先ほどのファイルを復号するのに使う。

$ gpg --import ./secring.gpg
gpg: 鍵8FFDF6D6: 秘密鍵を読み込みました
gpg: /home/yoshinori/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵8FFDF6D6: 公開鍵“ThugG (lolz) <nope@gmail.com>”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
gpg:       秘密鍵の読出し: 1
gpg:   秘密鍵の読込み: 1

$ gpg  Workbook1.xlsx.gpg
gpg: 1024-ビットRSA鍵, ID E22CB12D, 日付2016-11-18に暗号化されました
      “ThugG (lolz) <nope@gmail.com>”

これでWorkbook1.xlsxが復号された。このファイルを開こうとすると、パスワードがかかっている。ここで先ほどのパスワードを使って、このファイルを開く。開いたら、Sheet2のフォーカスされているセルに白字でフラグが書いてある。

RC3-2016-SNEAKY21