チーム Sobachka として参加した。最終的に獲得できたポイントは 1300 点でチーム順位は 38 位 (425 チーム中) だった。
の 9 問を解いた。
そのまま……。
FLAG{seccon2014}
seccon2014.pcapng という pcap ファイルが渡される。
strings seccon2014.pcapng
すると Base64 っぽい文字列が出てくる。デコードするとフラッグが出てきた。
$ strings seccon2014.pcapng
…
ChRkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30=
…
atob('RkxBR3tGN1AgMTUgTjA3IDUzQ1VSM30='); // => 'FLAG{F7P 15 N07 53CUR3}'
http://chat.quals.seccon.jp という URL が渡される。
LINE かと思ったら L1NE だった。
画像の URL を張り付けるとアクセスしてくれるので、アクセスログを見てみる。
153.120.82.112 - - [19/Jul/2014:20:27:28 +0900] "HEAD /hoge.jpg HTTP/1.1" 404 - "-" "MyVNCpasswordIsVNCpass123"
このログから、153.120.82.112 で VNC サーバが動いていることや、そのパスワードが VNCpass123 であることが分かる。
153.120.82.112 の 5900 番ポートに接続しようとしたができなかった。なので他に VNC で開いているポートがないか nmap 153.120.82.112
で探した。
$ nmap 153.120.82.112
Nmap scan report for 153.120.82.112
Host is up (1.1s latency).
Hot shown: 988 closed ports
PORT STATE SERVICE
…
5901/tcp open vnc-1
5902/tcp open vnc-2
5903/tcp open vnc-3
…
153.120.82.112:5901 に接続すると、フラッグが表示された。
FLAG{giveMeYourWebM0n3y}
encoded.txt という謎のテキストファイルを渡される。
ebg13/47
という文字列が見えたので nkf -r encoded.txt
(rot13/47) を試したところ、デコードできた。
$ nkf -r encoded.txt
SECCON 2014 に参加のみなさまこんにちは。
rot13/47 に気付くとは流石です。
nkfコマンドで簡単にデコードできることにも気付きましたか?
というわけで、おめでとうございます!
フラグは半角英数文字に変換してから入力してください。
FLAG{Have fun SECCON2014}
終了の 10 分前ぐらいに突然ひらめいて解けた。
Filesystem001.bin という FAT っぽいファイルが渡される。
00 0d 6b 22
で検索すると 1 件ヒットした。
FAT File System を読みながらヒットした辺りを読んでいく。
name1 = b'\x43\x00\x68\x00\x72\x00\x79\x00\x73\x00' # 0x61 - 0x6a
name2 = b'\x61\x00\x6e\x00\x74\x00\x68\x00\x65\x00\x6d\x00' # 0x6e - 0x79
name3 = b'\x75\x00\x6d\x00' # 0x7c - 0x7f
name4 = b'\x2e\x00\x6a\x00\x70\x00\x67\x00\x00\x00' # 0x41 - 0x4a
UTF-16 LE で読むと、ファイル名が出る。
(name1 + name2 + name3 + name4).decode('utf-16le') # => 'Chrysanthemum.jpg\x00'
Timestamp.rar が渡される。解凍すると Timestamp.dd が出てくるので FTK Imager を使って解析する。
unallocated space を適当に見ていると (恐らく JPEG の EXIF 部分?) 2012:05:23 13:29:00
とあった。
指定されたフォーマットに直せばそれがフラッグになる。
2012/05/23 13:29:00
…全然ダメな解き方だった。機 密 保 持 契 約 書.docx の中にある画像の EXIF を見るのが正攻法らしい。
読めなかったので Python で同じ動きをするスクリプトを書いた。
import sys
eax = 0
ecx = 0
edx = 0
stack = [None, None]
def l_01361000():
stack[0] = 0
stack[1] = 1
l_0136101f()
def l_01361016():
global eax
eax = stack[1]
eax += 1
stack[1] = eax
l_0136101f()
def l_0136101f():
global ecx
ecx = stack[1]
if ecx > 0xff:
l_01361032()
l_01361027()
def l_01361027():
global edx
edx = stack[0]
edx += stack[1]
stack[0] = edx
l_01361016()
def l_01361032():
global eax, ecx
eax = stack[0]
eax -= 2
print('FLAG{%d}' % eax)
sys.exit()
l_01361000()
FLAG{32638}
afterimage.gif というアニメーション gif が渡される。
重ねてみようという問題のタイトルに従って、重ねるスクリプトを書いてみる。
from PIL import Image
im = Image.open('afterimage.gif')
res = Image.new('RGB', (164, 164))
pix = res.load()
for y in range(164):
for x in range(164):
pix[x, y] = (255, 255, 255)
try:
while True:
print(im.tell())
im2 = im.convert('RGB').load()
for y in range(164):
for x in range(164):
if im2[x, y] != (0, 0, 0):
pix[x, y] = (0, 0, 0)
im.seek(im.tell() + 1)
except EOFError:
pass
res.save('result.png')
QR コードが出てきたので、携帯で読み取ってみる。
FLAG{Many dot makes a QR code}
まず ' and 0 union select sql, null, null, null, null from sqlite_master where type = 'table'; --
でどんなテーブルがあるか確認する。
ID=CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL,AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ) NAME=NULL AGE=NULL ADDRESS=NULL SALARY=NULL
ID=CREATE TABLE SECCON(FLAG TEXT NOT NULL) NAME=NULL AGE=NULL ADDRESS=NULL SALARY=NULL
SECCON というテーブルとそのテーブルに FLAG というカラムがあることが分かったので、' and 0 union select FLAG, null, null, null, null from SECCON; --
で中身を抜き出してみる。
ID=FLAG{EnjoySQLi} NAME=NULL AGE=NULL ADDRESS=NULL SALARY=NULL
amida という謎のファイルが渡される。
file amida
したところ次のような結果だった。
amida: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, stripped
手元の Kali Linux を立ち上げて実行したところ、あみだくじが出力された。
最終的に * が 1 ~ 8 のどの番号にたどり着くかを入力すればよい。
何度実行しても同じ結果だったので人力でやっていたが、No.200 まで行ったところでキリがないと思って諦めた。
真面目にソルバを書いていればよかったと後悔。あと No.1000 まであるとのことなので途中で諦めて正解だった。
進める度に使える文字が制限されていくので大変つらかった。
前回のオンライン予選で書いた自分の write-up を見たり XSS Filter Evasion Cheat Sheet - OWASP を見たりしながら解いていたが、Stage 6 まで解いたところでギブアップ。
st98.github.io / st98 の日記帳