1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chap3. Level2前半

Posted at

はじめに

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

この手順によって選択したフォルダ内に下の画像のファイル達が保存されます!
http.png

netowork100network100(1)を開くとHTMLで書かれているのがわかります。
内容的にnetwork100(1)をうまいこと実行できればflagが得られそうですね。

次に、network100(1)内の画像やcssファイルのリンクから考えて、
ディレクトリ構成を再現する必要があるとわかります。
css img jsという3つのフォルダを新規作成し、ファイル達を適切なフォルダに移動してあげましょう!
directory.png

ディレクトリ構成がこの画像のようになったら、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:指定ファイルから文字列を抽出。
sedlovelive! 内の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回目以降も順次上げて行きたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?