はじめに
CTF学習のため、cpawというサイトの問題を解いていく記事です。
今回はpcap見る問題と、バイナリファイル見る問題、SQLの問題を解きます!
Q17のWho am I?については本当に調べるだけなので省略しています。
この記事の対象者
- CTF超初心者
- cpawの問題を解いてみたい人
問題一覧
Q16. [Network+Forensic] HTTP Traffic
パケットキャプチャーファイルの中身を覗く問題
pcap:ネットワークを流れるパケットをキャプチャーしたもの
前回と同じくWireshark を使っていきます。
しかし、今回は前のようにflagが直接手に入らないので少し手を加える必要があります。
flagの見つけ方
Wiresharkでダウンロードした http_traffic.pcap
を開きましょう。
どうやらWebページを表示する通信や、
ページ内で何かしら操作した際の通信がキャプチャされているようですね。
ファイル -> オブジェクトをエクスポート -> HTTP... -> Save All
この手順によって選択したフォルダ内に下の画像のファイル達が保存されます!
netowork100
とnetwork100(1)
を開くとHTMLで書かれているのがわかります。
内容的にnetwork100(1)
をうまいこと実行できればflagが得られそうですね。
次に、network100(1)
内の画像やcssファイルのリンクから考えて、
ディレクトリ構成を再現する必要があるとわかります。
css
img
js
という3つのフォルダを新規作成し、ファイル達を適切なフォルダに移動してあげましょう!
ディレクトリ構成がこの画像のようになったら、network100(1)
を開いてボタンを押すとflagが得られます!
flag
cpaw{Y0u_r3st0r3d_7his_p4ge}
Q18. [Forensic] leaf in forest
バイナリファイルからflag見つける問題
※flagは全て小文字です!
flagの見つけ方1 (Unix または wsl 系の環境推奨)
とりあえずcatコマンドやらlessコマンドやらで中身を見るとlovelive!
が溢れかえっています...。
所々にAAAなどの 同じ3文字が埋め込まれているようなので、
コマンドで文字列を抽出してみましょう。
Unix系(WSL環境も)はstringコマンド + sedコマンド
を使います。
strings
:指定ファイルから文字列を抽出。
sed
:lovelive!
内の1文字でも一致するものを削除
strings misc100 | sed 's/[lovelive!]//g'
3文字連続を1文字ずつにするとflagが得られました!
flagの見つけ方2 (環境的に見つけ方1が厳しい場合)
スマートではないですが、Windowsだと
メモ帳orVScodeなどで開く->置換でlovelive!を削除->3文字連続を1文字に
flag
cpaw{mgrep}
Q22. [Web] Baby's SQLi Stage 1
基本的なSQL文を書く問題
SQL:データベース操作に使う言語で、データ追加・削除・検索・更新ができる。
このサイトのフォームに、
指定されたSQL文を入力&実行してぱろっく先生を探してあげましょう!
SQLあんまり知らないけど解きたい人用のSQL文超簡単解説をつけておくので、
よければ参考程度に見てみてください!
大ヒントにはなってしまうのでそこは悪しからず...。
SQLの答え見たくないけどSQL考えたい人向けヒント
まず、SQLには主に、以下の4種類の文があります。
- INSERT:テーブルにデータを追加する
- SELECT:テーブルのデータを検索する
- UPDATE:テーブルのデータを更新する
- DELETE:テーブルのデータを削除する
今回は、探す ことが目的なのでSELECT
が適切でしょう。
次に考えるのは、 どこの列(カラム)の です。
これは、列名がわかっている場合なら id列の〜 というように指定できますが、
今回は探したいデータベースの構造がわからないので、全ての列の結果を表示させましょう。
こういった場合は ワイルドカード を用います。
何を使うかは、このサイトとかを参考にしてみてください!
最後に、palloc_home
というテーブルからということなので、
FROM テーブル名
で指定してやります。
SELECT 列名(またはワイルドカード) FROM テーブル名
といった基本構文が出来上がるのではないでしょうか!
求めるSQL文と解説
SELECT * FROM palloc_home
※基本大文字で表記しますが、小文字でも動作するようになっています。
flag
cpaw{palloc_escape_from_stage1;(}
ここで出てきたnext stage urlは後で使う為、適当な場所に残すことをお勧めします!
おわりに
第3回目はLevel2の問題をいくつかピックアップしましたが、
Level1のように一筋縄でできる問題がだいぶ減ってきた感じがしますね...。
第4回目以降も順次上げて行きたいと思います。