ユーザ用ツール

サイト用ツール


サイドバー

ctf:lesson:第5回

第5回資料

  • 2018/06/26
  • 週末にGoogle CTF 2018 が開催されました
    • 18歳未満は参加できない
    • 後日問題紹介したい
  • 今回から火曜日放課後・土曜日夜の週2体制で行こうと思いますやっぱ今週はキツイ もう一人講義役欲しい、誰かやって
    • 資料は全部置いてあるので自由に見て手を動かしてみてください、わからないことがあればいつでも聞いてください
  • 新歓のスプレッドシートには記入しましたか
随分と遅くなってしまいすみませんが、新歓の大まかな予定をお伝えします。開催予定地 視聴覚室内容 菓子パ (テーブルゲーム予算 10k~15k 後日、実費から一人当たりの参加費を計算し徴収します。また、日時はこのあと送信するファイルに、参加可能な日時を入力してもらったのち、参加人数の一番多い日を抽出して、確定とします。

準備

  • 事前にpkcrackをインストールしておいてください
    • 方法は自分で調べてみて(簡単です)

やってみよう

  • NITAC miniCTF「ZIPZIP」
    • 去年の冬に学内で開催されたCTFです
    • 問題作成と資料作成のバランスが難しい
  • zip.zipをダウンロードしてください
  • 展開できますか?パスワードがわからないのでできませんね
  • とりあえず、どんなファイルが入っているか見てみましょう
    • 以降、コマンドライン(ターミナル)への入力は$ lsのように表現します
    • $で始まっていない行はコマンドではなく結果です
snippet.bash
$ zipinfo zip.zip
Archive:  zip.zip
Zip file size: 22066 bytes, number of entries: 2
-rw-rw-r--  3.0 unx    23367 BX defN 18-Feb-03 14:55 NITACminiCTF.png
-rw-rw-r--  3.0 unx       24 TX defN 18-Feb-03 14:56 flag.txt
  • flag.txtというのにFLAGがありそうですね
    • CTFはCapture The Flagの略ですよ!!(大前提)
  • NITACminiCTF.pngも入っています、これを使ってパスワードを迂回してみましょう
    • まず NITACminiCTF_copy.png をダウンロードしてください
      • 名前変えといて
    • 以下を実行してみましょう
snippet.bash
$ zip plain.zip NITACminiCTF_copy.png
$ pkcrack -C zip.zip -c NITACminiCTF.png -P plain.zip -p NITACminiCTF_copy.png -d output.zip
... いろいろ表示されます ...
$ unzip output.zip
$ cat flag.txt
... FLAGが出る ...

パスワードなしで読めてしまった…

  • これは「既知平文攻撃(KPA: Known Plaintext Attack)」という手法です
  • 平文はもともとのファイル、それに対しパスワードで暗号化されたものを暗号文といいます
  • 既知平文攻撃を使うと、ある平文に対応する暗号文がわかっているときにその逆をする、つまり別の暗号文から平文を復元することができます
    • 「ある平文」→NITACminiCTF_copy.png
    • 「対応する暗号文」→zip.zip中のNITACminiCTF.png
    • 「別の暗号文」→zip.zipそれ自体
    • 復元された「平文」→output.zip
  • pkcrackはその実装というわけ
  • 鍵の復元もできるよ

発展

  • 調べてみよう
    • ブロック暗号とストリーム暗号
    • 暗号利用モード(CBC, ECB …)、その脆弱性
    • CRC32
    • 何かわかったらWikiに書いてほしいな…(/ω・\)チラッチラッ
ctf/lesson/第5回.txt · 最終更新: 2018/08/15 16:49 (外部編集)