yyy

CTFつよくなりたい

Trend Micro CTF 2017 - Raimund Genes Cup - Online Qualifier Writeup(rev100)

開催期間(JST)

06/24 PM1:00 ~ 06/25 PM1:00

結果

・チーム名:wabisabi

・得点:200pt

・順位:得点したチーム中,175/294

解いた問題

・rev100

取り組んだが解けなかった問題

・Analysis-Offensive100

・rev200

・IoT/OSINT/SCADA100

はじめに

参加してました.用事があったりで全部の時間は使えなかったけど割と楽しかった.

1問しか解けてないのはいつものこと.(1問アシストしたので1.5問みたいな感じだから・・・)

Writeup

rev100

配布されるファイルは,AESで暗号化されたものが渡される感じだった.復号してからfileコマンド.

$ file pocket
pocket: Zip archive data, at least v2.0 to extract

解凍するとbiscuitという名前のrarで圧縮されたファイルがでてくる.

$ unrar e biscuit

biscuit1というPE32のものと,biscuit2というpasswordつきzipの2つのファイルがでてくる.

biscuit1を実行してみる.

$ ./biscuit1
Please find sweets name starting from m for biscuit2.

mから始まるお菓子・・・と思い調べた結果,マカロンではと思い"macaron"で解凍してみるといけた.

Archive:  biscuit2
[biscuit2] biscuit4 password:
  inflating: biscuit4
  inflating: biscuit5
  inflating: biscuit3

biscuit3はjpgだったのでとりあえずExifを見てみるが,特に何もない.

stringsしてみると,末尾にzipがついているのがわかる.binwalkが手っ取り早いので,

$ binwalk -e biscuit3

すると,"cream"と書かれたbiscuit.txtがでてくる.

biscuit4を見る.これはテキストファイル.

$ cat biscuit4
Please create flag.

hint:

Flag = TMCTF{biscuit3_ biscuit5}

biscuit3のほうは手に入っているので,biscuit5をみていく.

$ file biscuit5
biscuit5: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows

実行しても特に何も表示されない.

objdumpで逆アセンブルして読んでみると,"biscu"という文字列を使って_shift_charという関数でゴニョゴニョやってる.

静的解析が辛くなったので,IDAのデモ版で実行しながらみていくことにした.

f:id:ywkw1717:20170625185419p:plain

左下のルーチンを"biscu”という回数分繰り返すので,このルーチンの前あたりにブレークポイントを張って動的解析していく.

f:id:ywkw1717:20170625185453p:plain

“biscu"という文字列を,先頭から順に1文字ずつ取り出して_shift_charに渡すという処理が計5回行われる.

call _shift_char

に対してステップインして中を見ていく.

f:id:ywkw1717:20170625185614p:plain

最初に渡されるのは"b".

それを"abcdefg…..“というスタックに積んであるものに対して"b"が出てくるまで1文字ずつシフト.

その後,シフトした回数+1というか↑のルーチンを実行した回数分,"abcde…“という文字列を先頭から左にシフト.(正確に言うと,スタックにある"abcde…."のアドレスに回数分を加算)

すると,"b"の場合は"c",次の"i"は"h",次の"s"は"o"...となっていって最終的に"choux"となる.

f:id:ywkw1717:20170625190148p:plain

よって,biscuit3の答えと合わせてTMCTF{cream_choux}でsubmitしてみるも通らない.

cream chouxで調べてみると,シュークリームが英語で"choux cream"らしく,(英語力の無さ)

TMCTF{choux_cream}にしたらいけた.

取り組んだが解けなかった問題

Analysis-Offensive100

$ file Forensic_Encyption
Forensic_Encyption: MS-DOS executable, MZ for MS-DOS

これは最初,binwalkで取り出して3つのzipファイルに対してゴニョゴニョやってた.今年のPlaid CTF予選で出たZipperみたいにzipのバイナリを書き換えて修正していくものかなと思ってたけど,file_3がどうも見当たらない.

渡されたファイルのバイナリを見てみるとわかった.

00000000: 4d5a 0304 1400 0000 0800 f484 af4a bc79  MZ...........J.y
00000010: 17c2 2a34 0000 8879 0000 0600 0000 6669  ..*4...y......fi
00000020: 6c65 5f33 d45a 0958 1357 bb3e 618d c822  le_3.Z.X.W.>a.."
.................

先頭のシグネチャがMZであることからMS-DOSかと思うが,file_3という文字列が見える.

これは実はzipのlocal file headerであり,もともとのシグネチャ0x504B0304の504Bを4d5aに書き換えられたものだった.

よって,そこを修正して解凍するとうまくいく.

出てきたファイルは3つ,jpg,passwordつきzip,pcapファイルがそれぞれ1つずつ.

ここからjpgをstringsしたりstegsolveで見てみたりしたけど進捗なし.

pcapファイルのほうもわからず途方に暮れていると,チームメンバーのkobadからslackが飛んできて,passwordつきのzipは解凍できたけどpcapファイルが見つからないとのこと.

そこで,自分がやった過程を共有して,あとはkobadに任せた.(プロなのですぐ解いてた.エニグマだったらしい)

rev200

RFIDの問題.

渡されたテキストファイル.

$ cat rawbits.txt
Using Clock:64, Invert:0, Bits Found:625
ASK/Manchester - Clock: 64 - Decoded bitstream:
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101
1110111110111000
1010011110111010
1100111111111111
1011101111011101

検索したら16進数に戻していたりしたので,適当にスクリプト書いて

DemodBuffer:  EFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDDEFB8A7BACFFFBBDD

とかやってたぐらい.

全く知らない分野で厳しかった.

IoT/OSINT/SCADA100

これは,whoisで渡されたドメインを調べて,電話番号がわかって,同じ電話番号で登録されているドメインを見つけて,そこに書かれているメールアドレスを調べて....とかやってたぐらい.

まとめ

Google CTFよりかは難しくなかった.

rev力~~~~