Gen's blog

CTFとか、競プロとか、その他諸々

BSidesSF CTF Writeup

Harekazeで参加。チームは3837ptで18位でした。 私は8問解いて1451pt入れました。

[Crypto 450] vhash

—- Due to a bug, the challenge might be easier than intended. Enjoy the free points! —-

サーバサイドのスクリプトがバグっていて、ハッシュが固定されている。cookieのusernameを書き換えるだけ。

FLAG:180e2300112ef5a4f23c93cfdec8d780

[For 40] easycap

TCPストリームを読むと書いてある。

FLAG:385b87afc8671dee07550290d16a8071

[For 666] matryoshka

地獄。有名なものからマイナーなものまで、様々な形式で多重にアーカイブ化されている。 途中までst98さんが解いてくれていた。詰まったところだけ下に記述する。

dact

fileコマンドを叩いても判別できなかったので、「"0x444354c3" magic」などでぐぐっているとDACT compressed dataとわかった。aptでアーカイバを入れて展開した。

freeze

fileコマンドを叩くと frozen file 2.1 と表示され、ぐぐるfreeze というコマンドに行き当たる。しかし、展開方法がなかなか見当たらなかった。悩んでいると、st98さんがFedoraのパッケージとGentooのパッケージを発見。Gentooのものを落としてビルドして、unfreeze コマンドで展開した。

zpaq

7kSt から始まるファイルが出てきて、ぐぐるとZPAQという形式だとわかる。しかし、Ubuntu 14.04のaptで入る zpaq コマンドが古すぎて展開できなかったので、最新版のソースを落としてビルドした後、展開した。

展開後

全て展開し終えると、FLAC形式のファイルが出てくる。ビットレートが8bitで、サンプリング周波数が1Hzというあたりから、データ部分がテキストになっているのではないかと思った(わざわざFLAC可逆圧縮)を使っていることもヒントになるかも)。というわけで、一旦WAVEに変換したのだが ffmpeg のデフォルトだとビットレートが16bitに変換されてしまい、ここで無限に時間を溶かした。結果的には下のような感じでうまくいく。

$ ffmpeg -i file.flac -acodec pcm_u8 file.wav
$ strings file.wav
RIFF
WAVEfmt
LIST
INFOISFT
Lavf57.56.100
dataw
.. - ... - .... . .. -. -.-. .-. . -.. .. -... .-.. . ... .... .-. .. -. -.- .. -. --. -- --- .-. ... . -.-. --- -.. .

モールス信号がでてきたので、適当なデコーダに投げる。

ITSTHEINCREDIBLESHRINKINGMORSECODE

[For 150] Latlong

渡されるファイルに対して file コマンドを叩くとWAVEであることがわかる。Audacityなどで色々いじってみたものの、何もわからないので放置していたが、運営からヒントが出た。

Hint - “Ax25 will lead you in the direction”

ぐぐると、AX.25というアマチュア無線で使われるプロトコルがあるらしい。デコーダを探すと、Releases · h2so5/Invasive · GitHubを見つけた。

flag{f4ils4f3c0mms}

これヒントなしでどうやって解くんだろう…

[Pwn 30] easyshell

シェルコードを送るだけ。

FLAG:c832b461f8772b49f45e6c3906645adb

[Rev 10] Easy

strings

FLAG:db2f62a36a018bce28e46d976e3f9864

[Rev 75] Skipper

スキッパーといえばはいふり

uname -n の結果、/proc/versionの内容、cpuid命令の結果をそれぞれ正しいか比較している。1番目と2番目は chroot を使って突破できたが、3番目をどうするか悩んでいた。苦し紛れにバイナリ中の比較対象の文字列を GenuineIntel に書き換えるとFlagが出てしまった。(入力文字列や比較対象の文字列がFlagの生成に影響があるのかと思っていた)他の人のWriteupを読むと、認証部分をデバッガで飛ばしても良いらしく、つらい気持ちになった。

FLAG:f51579e9ca38ba87d71539a9992887ff

[Web 30] easyauth

cookieのusername変えるだけ。Flagとっておくの忘れてた。

感想

Forensicsしか解けないのつらい。