ぷらおり

適当にプログラムとかCTFとか

KOSEN SECCON 2020 Write-Up(tk)

高専SECCONお疲れ様でした。
恐らく最後の参加で6位(同率5位)は十分好成績だと思うのでほっとしています。
Writeupですが,特にBinaryに注力して解いたのでBinary中心のラインナップになってます。
なお,他メンバーのwriteupも当ブログにUPしますので,そちらも見てください。
つた , olton , hk

目次

  1. 足し算しよう(programming)
  2. ローカルプロキシ入門(Network)
  3. 一時停止(Binary)
  4. Maruware(Binary)
  5. デバッガ(Binary)
  6. 感想

足し算しよう

面倒なのでCasioの高性能電卓でsum関数使って解きました。excelとかでもいいと思います。

FLAG{49505500}

ローカルプロキシ入門

とりあえずローカルプロキシとのことなのでBurpSuiteを導入。
普通にリクエスト送信してみるものの通らなくて一旦放置していたところチームメイトから同ディレクトリにhint.phpがあると教えてもらいました。 hint.phpの指示に従ってrobots.txtを見ると"lbauccckounp"というディレクトリがあるらしいです。ディレクトリ内容が見えたので中にあったflag_get.txtを開くとflag_get.phpの内容が書かれていました。 f:id:Mahoroa:20201114182142p:plain
リクエストの一番下にproxyサーバの種類が書かれており,OWASP ZAPとなっていたのでBurpSuite?に変更してflagゲット。

FLAG{FiddlerIsNo1}

一時停止

File.zipが渡されます。「ファイルの種類を特定し~」という問題文とzipファイルからdocxに変えるような問題と推測してとりあえず試してみましたが失敗。
fileコマンドにかけてみるとどうやら普通のzipファイルで中身が問題ファイルらしい(おい...)。
解凍するとFileというファイルが出てくるのでこれをfileコマンドにかけます。AVIファイルのようなので拡張子をaviに変更しとりあえず再生してみると一瞬だけflagが見えます。今回はたまたま環境にaviutlが入っていたのでロードしてコマ送りするとflagゲット。

FLAG{CEwm6E9k}

Maruware

Maruware.exeが渡されます(こわ)。とりあえず実行してみるが何も起きない。
試しに何か出てこないかな~とstringsコマンドにかけると"HINT_DoYouKnowILspyOrDnspy"と出てくるのでdnspyにロードします。
ざっと目を通すとConfigのInithializationメソッドが怪しそう。 f:id:Mahoroa:20201114165614p:plain
上のaメソッドで受け取った文字列のバイトコードと18のxorを取って16進数変換して文字列出力し,その結果がInitializationにある文字列(545E5355695F534047455340575B41415354464B6F)と一致すればいいようです。
ここまでわかれば上の文字列を分割して18とxorを取れば元に戻るので,ASCIIで変換すればflagゲット。

計算結果 : 70 76 65 71 123 77 65 82 85 87 65 82 69 73 83 83 65 70 84 89 125 18

FLAG{MARUWAREISSAFTY}

デバッガ

checker.exeが渡される。とりあえずdnspyにロードしてみるがdnspyではダメなよう...。
ここはIDAの出番ということでIDAに突っ込みます。ざっと目を通すと大体この辺りが怪しそう。 f:id:Mahoroa:20201114172642p:plain
赤く塗ってある所の1個下の分岐が左側に行けばいいので分岐箇所にブレークポイントを置いてデバッグ。デフォルトだと右上の方にレジスタが表示されてるので右クリックでZFを1にしてjnzをtrueに変更するとflagゲット。 f:id:Mahoroa:20201114181249p:plain

感想

今回のBinary問で出されるプログラムが全体的にwindowsで解析するようになっててgdbとobjdumpをあんまり使えなかったので途中ほんとに焦ってましたが解けて良かった...。
今後は今回レベルのpwn/exploitが解けるように頑張っていきたいですね。