読者です 読者をやめる 読者になる 読者になる

BlogIsHowMuch

鑑賞した作品のレビューやプログラミング系のネタをダラダラ書いていくだけのブログ

YEHD 2015 CTF writeup

grep?

stringsで文字列を抽出して適当にgrepでキーワードを検索したら見つけた。

root@kali:~/yehd/grep?# strings file |grep yehd
root@kali:~/yehd/grep?# strings file |grep YEHD
621:YEHD{flag_is_strings}

Rotate

LRUQ{Fvzcyr_Fhofgvghgvba_Pvcure}というメッセージからおそらくシーザー暗号だろうと踏んでこちらのサイトで13文字ずらす。暗号生成ツール - 暗号くん

結果:YEHD{SIMPLE_SUBSTITUTION_CIPHER}
あとは大文字を小文字に直してポイントゲット。

slide

パワポの形式であるslide.ppsxをダウンロード。
開いてみると黒く塗りつぶされたflagが表示されるが、編集が不可能になっているため読むことができない。
とりあえず拡張子をzipに変えて展開してから中身を探索してみると
slide/ppt/mediaに黒く塗りつぶされていないflagの画像データimaga1.jpgが見つかる。

Read_Pcap

 配布されたpcapファイルをwiresharkで開いて眺めてみると途中でflag.pngをダウンロードしているログが見つかるので、File -> Export Objects -> HTTPからflag.pngを抽出してflagゲット。

YEHD{pcap_pcap}

Morse (Revenge)

リンク先に音楽ファイルがあったのでとりあえず聴いてみるとモールス信号のような音が流れているので、波形を表示するソフトを用いてモールス信号解読してみる。解読した結果flagは出ずにもっと頑張れと言われる。(見事に引っかかった)
「EASY. IT'S EASY.」というメッセージもあったので、やけくそで文字列を抽出してみたところ大量のflagが出てきた。

root@kali:~/yehd/morse# strings morse.wav
RIFF$
WAVEfmt 
data
YEHD{Most_of_looping_waveform_is_not_bad}YEHD{Most_of_looping_waveform_is_not_bad}YEHD{Most_of_looping_waveform_is_not_bad}YEHD{Most_of_loopin
略

fill

配布されたファイルをfileコマンドで調べてみるとpngファイルであることが分かったので拡張子.pngを付けて開いてみる。
なにやら暗号らしきものが出てきたので真面目に解こうとするも先に進めない。
タイトルの「fill」で似た問題がseccon2015の予選で出ていたことを思い出しgimpで白い部分を埋めてみる。

まだflagが出ないので、しきい値をいじってやり直したら無事にflagが出た。

BeingDebugged

fileコマンドで配布ファイルの正体がwindowsのプログラムだとわかるので、拡張子.exeをつけて実行すると「Wrong...」とメッセージが出ます。
タイトルからもデバッグしろといわれているのでデバッガ―のOllyDbgで起動してみると何事もなくflagが出た!

YEHD{1sD3bugg3rPr3s3nt}

IDAで調べてみたらIsDebuggerPresentでデバッガで起動したときにのみflagが出てくるように分岐されていた。

Readme

Linuxの実行ファイルらしいので仮想マシンLinuxでとりあえず起動するもなにも起きない。
gdbでdisas mainを実行するもデバッグオプションをつけられずにコンパイラされたのか効果がないので、dissyで逆アセンブリして読めるようになった。
怪しい分岐があったのでそこら辺でbreakpointを張ってプログラムを進める。
f:id:HowMuch:20160207142412p:plain

適当に進めていったらstackにflagが表示された。なんかマグレで取れちゃった。

Tofu

指定されたindex.htmlのソースを読むとbase64化された部分に以下の記述があった。

* { font-family: FontAwesome; }

 これをそのままググると次のサイトがひっかかる。
Web フォントでアイコン表示。 Font Awesome 使ってみた | WWW WATCH

 FontAwesomeをダウンロードして展開したフォルダの中にダウンロードしたindex.htmlを入れて以下の一行をエディタで追加。

<link rel='stylesheet', href="css/font-awesome.css"/>

編集したindex.htmlをブラウザで開くとFlagがでる。
f:id:HowMuch:20160702174102p:plain

YEHD{WEBFONT-IS-IMPORTANT!}

Flags?

pcapファイルを見るとFlagsのビット0が立っているので「flags ip bit0 rfc」でググると一番に出てくる。

YEHD{3514}

Wireshark

mp3ファイルが配られるが、network問題なのでwiresharkで開いてみたら普通に読めた。
「フレームの最後を見ろ」と書かれているので、注目してみるとFlagが一文字ずつに分割されてフレームの最後にくっついていた。

outMp3 = b""
offset = 45 + 192 - 1

with open("out.mp3", "rb") as f:
 outMp3 = f.read()

while True:
 try: 
  print(chr(outMp3[offset]), end="")
  offset += 192
 except:
  exit(0)
YEHD{Wireshark_is_Binary_Editor}