窓を作っては壊していた人のブログ

提督の窓や成績の窓を作ってました.今では適当に好き勝手に開発をしてます.

SECCON Beginners 2017 仙台に参加してきた(ネタバレ含)

2017.seccon.jp

3つの講義を受けて後の演習で実際に難問か解くというもの. ビギナーの私にも理解できるような非常に丁寧で面白い講義でした.

以下覚えてることを適当に解き方と一緒に書く.

  • mySTYLE

問題のタイトルから多分CSSと思ってみてみたらあった.

  • SimpleLogin

覚えてない.たぶんSQLInjection,やるだけ.

  • Jumpin'

問題の内容説明にPreserve logsって書いてあったから言うとおりにしたらヘッダに見つかった.

他の人の解き方の説明を聞いていた時にWiresharkを使ったという人がいた.その時に思いついたのがWiresharkでpcap保存して,あとはstringsとgrepで抜き出してsedでいい感じにすれば一気にフラグ生成できるじゃんという…

  • Revenge

講義に使用したフォームをちょっと変えたもの.リクエストをDeveloper Toolsで見るとヒントが出てくるのでそれを使えばよかっただけ.

あとはSQLのエラーログを見ればすぐわかった話.出来なかったの本当にアホだった.

  • Simple

なんだっけこれ…

  • Export

  • W4nn4cry?

もうどっちがどっちか覚えてない.点数低い方は一瞬だったから覚えてない.

flsでファイルシステム見ていい感じのものを抜き出すだけ.ヒントに1.0.2gって書いてあってOpenSSLのバージョンっぽいなぁとか考えてたら本当にその問題で笑ったのは覚えてる.

  • crackme

脳死でobjdumpするだけ.入力値をコマンドライン引数をもらうタイプの問題で,じゃあ比較の命令があるだろうと思って探したらあったのでその周辺を見てみると,atoiを呼んでいた. なら入力すべきは整数値ということがわかるので,あとは比較に使われているhexをmacの電卓とかに入れて調べる.

  • extrackme

フラグの変換作業で時間切れになった悲しい問題. 今になって思うとxxdとか使って正規表現で抜き出すか,Pythonでバイナリとして読み取って,いい感じにsplitして変換までを一括でやれば一瞬だった気がする.

こういう系の問題どうやって文字に変換するのが一番ラクなのか知見が欲しい.

  • inputme

やってすらいない

追記:

やってみた.とりあえずobjdumpでダンプしてみるとcheck関数がいくつか見つかる. これも数値を比較しているような感じだった.まだバイナリは不安なのでgdbレジスタを確認しながら見てみると,scanfは%dを渡していたので数値でよさそう.

あとは比較演算が行われているhexを10進数になおして,シフト演算とかのやつを電卓叩きながら必要な数値を入れれば完成. 横着をしてjump命令で飛ばしたけれども,入力値によってレジスタの値を変えていたのでフラグは入手することができなかった.

  • decodeme

問題見てない

  • てけいさん for ビギナーズ

100問算数しろとかいう非人道的な問題.抜け道が有ると思ってパラメータ見たりクッキーを見たりしたけど,それっぽそうなものは何も見つからない.またセッションはクッキーで保持していた.

レスポンスはPHPで生成しているのでよほど性格が悪い出題者でもない限りDOMの構造は変えないだろうと思ったのでPythonのrequestsを使って自動化した.クッキーで判定だったのが幸いしてsessionクラスを使うだけで解決.evalで算数できるのあの時初めて知った.

CTF初めてだったので,色んな刺激があって非常に楽しかった. その熱のままBackdoorCTFに参加してみたけど全く歯がたたないのでもうちょい時間をかけて勉強していこうと思う. 今までに使ったのことがないツールを一気に知ることが出来たので,どんどん使って使い方を学んでいきたい.

objdumpなんて自作ライブラリがちゃんとシンボル出力できているかどうかでしか使ったことなかったし…

あと,今回の演習では3位だった.