2018/5/26〜27のBeginnersCTFに参加してみた件

CTF4b参加してみた

去年も一昨年も参加できなかったCTF for Beginnersがオンラインで開催すると聞いて参戦しました。
CTF自体はガチの初心者で、CpawCTFに挑戦してつまづいたっきり放置してました。
開始してから研究室のSlack見るまでずっと忘れてたので遅めに開始しましたが、楽しかったです(小並感)

結果

一人ぼっちで参加したのでチーム名はハンドルにしようか悩んだのですが時期も考えて、

f:id:sorenuts:20180530155402p:plain

古 戦 場 か ら 逃 げ る な
にしました。解けた問題の割合みたいなやつは下です。

f:id:sorenuts:20180530155552p:plain

Pwn以外を1問ずつ、Miscは全完でした。

解法

とりあえず書くほどでもないのでしょうが、どんな風に解いたのか反省も込みで書き残したいと思います。解いた順番です。

[Warmup] Welcome

IRCチャンネルのトピックにあります」とだけ書いてあったので、(どこにあるんだよ・・・)と思って探し回りましたが、ルールページにIRCのリンクが貼ってありました。

[Warmup] plain mail

pcapファイルが渡されました。Wiresharkで開いてみると、SMTPプロトコルがちらほら見えるので、smtpでフィルタをかけてみていきました。
「最初のメールで秘密のファイルを、次のメールでパスワードを送るぜぇ〜(意訳)」みたいなことが書いてあったので、パケットからメールを復元する方法を調べると、IMFでフィルタをかけてeml形式でエクスポートしたら復元できる〜とのことだったので、「ファイル」→「オブジェクトをエクスポート」→「IMF」で復元できた。

[Warmup] Veni, vidi, vici

3つのtxtファイルが入ったzipが渡されました。
とりあえず初手、Googleで「Veni,vidi,vici」を検索。
ejje.weblio.jp
ガイウス・ユリウス・カエサルが...』なるほど。おなじみのシーザー暗号かな?ということで、シーザー暗号の複合ができるサイトで見てみることに。
part1は『pgs4o{a0zber』の部分がどうみてもflagなので"pgs4o"が"ctf4b"に対応するように鍵を指定して複合。
part2もどう見てもシーザー暗号なので、同じ鍵で複合してみるも文にならない。じっくり見てみると、コロンまでの文字数が一致していることから、全く同じ文章を別の鍵で暗号化したものだと推定。通るように複合。
part3はパッと見てひっくり返した文字になってるのがわかったので頑張ってモニターをひっくり返した。CTFは筋肉も使うんだなぁ...たまげた(?)

[Warmup] Simple Auth

よくわかんないファイルが渡されたので、とりあえずfileコマンドにかけてみる。するとどうやらelfファイルのようなので、Ubuntuにコピーしてreadelf
chmod +xして実行できる状態にして、ltraceで実行したらフラグの文字列が見えたのでおわり。

Find the messages

ディスクイメージが渡された。中身は1,2,3のディレクトリで、1はtxt、2はpng、3は何も入ってない状態だった。
1のtxtは終わりの文字が'='だったので、base64の匂いがするのでbase64でデコードしたらflagの破片がでてきた。
2は開こうとしても開けないので、file、stringで調査してみるも、怪しい点が見当たらない。試しにバイナリエディタに入れてみるとファイルヘッダが全部58になっていたので、正しいファイルヘッダに書き換えたら無事開くことができた。画像にflagの破片が書かれていた。
3はディスクイメージ自体の問題なのではないかと疑って、foremostコマンドにかけてやるとpdfが出てきた。中身はそのままflagの破片だったので無事AC

てけいさんえくすとりーむず

書いてある通りのコマンドを実行してみると、「3桁どうしの計算を300秒で100問解いたらフラグをやるよ(意訳)」といった内容だったので、どうみても手計算じゃできません本当にありがとうございました。
pythonとかrubyで標準出力から計算式持ってきてevalしたらいけそうだなーと思ったので頑張ってみるも、上手くできない。なんでだろうと思っていたら、どうもgetsだと改行が出てこないせいで処理が止まってしまう様子。仕方ないのでgetcで9文字取ってはevalして標準入力にwriteを繰り返す方法でクリア。

[Warmup] Greeting

割と早めに手を出したのに解けたのは最後になってしまった。
「adminだけがフラグを読めるで(意訳)」とあったので、とりあえず何も考えずにadminを入力したら「偽管理者」に書き換えられてしまった。
下の方にコードが書いてあり、噂に聞こえたすごいphpなのを見ていて、XSSかな?と思ったけどもhtmlspecialcharsでエスケープされているので無理なのを知る。
書き換えが発生する箇所の下をみるとcookieから名前を取ってくる際には書き換えないことが見て取れるのでEdit this Cookiechrome拡張でcookieを書き換えてみるも、上手くいかない。ここで後回しにすることを決めた。
後になってからpythonのcookiejar使えばいけそうじゃないか?と思ったのでcookiejar経由でwebページを取得したらフラグが出てきてAC
他の人の解説を見てみたら普通にEdit this cookieでいけてるので謎

感想

解けそうな問題もまだあったが(具体的にはRSA is Power、Gimme your commentあたり)、素因数分解のツール探しやら、XSSできることに気づいてもどうやって手元にフラグを得るかが分からなくて解けなかった。
競技プログラミングと違って発想力をものすごい使う感じがあるので、是非とも積極的に参加していきたいなぁと思いました。まる。