Rso's Jotter

日々の開発の知見のメモやその他雑記

SECCON CTF Beginners 初参加したのでその記録と、使ってよかったツール、コマンドのメモ

SECCON CTF Beginners

前回の マイクリハッカソン に参加したメンバーと、SCCON 2019 Beginner に参加しました。

2018.seccon.jp

以下その概要と結果です。

チーム人数 3名:(うち自分含む2名初参加)

結果 666チーム中 200位ぐらい (上位1/3ぐらい)

解けた問題

f:id:rso:20190527074414p:plain
解けた問題

  • Web 2/5問
  • Pwnable 0/4問
  • Reversing 1/4問
  • Crypto 1/4問
  • Misc 2/4問

ほとんどWarmupレベルの問題しか解けてないという.. でも初参加で全く手が出ないという状況ではなかったので、良いレベル感だったかなと思いました。

Sliding Puzzleぐらいは解けばよかったかなと後から思いました(全部の問題みていない)

あったら便利だなと言うツール

WriteUpはwarmupレベルの問題しか解けなかったので、ここでは書きませんが、 もし次回参加するときの備忘の意味を兼ねて、調査で使用した/便利だったコマンドをメモしておきます。

インストール方法もググったら出てくると思うので、ここでは省略します。

nmap

おなじみポートスキャンコマンド。サーバのどこのポートが空いているかを教えてくれます。 CTFではとりあえずこれを打つということが多々ありました。

$ nmap 153.120.129.xxx

Nmap scan report for 153.120.129.xxx
Host is up (0.022s latency).
Not shown: 996 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
9100/tcp  filtered jetdirect
10000/tcp open     snet-sensor-mgmt
20000/tcp open     dnp

cURL

HTTPリクエストを送ることができるコマンド。 リクエストヘッダやボディを事由に入れれるので、スクリプトを入れたPOSTなどで試行錯誤するときなど、 あらゆる箇所で使用されます。

binwalk

今回始めて知りました。 バイナリファイルを引数に与えてやれば、内部がどういうファイルなのかを判定してくれます。 画像と圧縮データなど、複数の要素が合成されてる場合でも見分けることができます。

githubja.com

$ binwalk e35860e49ca3fa367e456207ebc9ff2f_containers                                                                                                             ~

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
16            0x10            PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
107           0x6B            Zlib compressed data, compressed
738           0x2E2           PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
829           0x33D           Zlib compressed data, compressed

foremost

こちらも初めて知りました。 こちらもバイナリデータのデータ構造を元に、中身を判定してくれて、さらにこちらは抽出までやってくれます。 qiita.com

od

バイナリのダンプを表示してくれます。 私は以下のコマンドで16進ダンプを見ることが多かったです。

$ od  -Ax -tx1z file.bin 
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  >.ELF............<
000010 03 00 3e 00 01 00 00 00 f0 4d 00 00 00 00 00 00  >..>......M......<
000020 40 00 00 00 00 00 00 00 60 dc 02 00 00 00 00 00  >@.......`.......<
000030 00 00 00 00 40 00 38 00 09 00 40 00 1c 00 1b 00  >....@.8...@.....<
000040 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  >........@.......<
 ... 

objdump

いろいろな使い方ができますが、今回はバイナリ実行ファイルを機械語に逆アセンブルして確認するために使いました。

$ objdump -S -d seccompare
  400630:       c6 45 d0 63             movb   $0x63,-0x30(%rbp)
  400634:       c6 45 d1 74             movb   $0x74,-0x2f(%rbp)
  400638:       c6 45 d2 66             movb   $0x66,-0x2e(%rbp)
  40063c:       c6 45 d3 34             movb   $0x34,-0x2d(%rbp)
  400640:       c6 45 d4 62             movb   $0x62,-0x2c(%rbp)
  400644:       c6 45 d5 7b             movb   $0x7b,-0x2b(%rbp)
  ...

ここから先のバイナリを読むのに慣れておらず、これ以上の解析は苦戦しました.. もっとBinary力を身に着けないと、warmup以降の問題を解くのは難しいのかなぁと思いました。

Binary Hacks ―ハッカー秘伝のテクニック100選

Binary Hacks ―ハッカー秘伝のテクニック100選

  • 作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2006/11/14
  • メディア: 単行本(ソフトカバー)
  • 購入: 23人 クリック: 383回
  • この商品を含むブログ (223件) を見る