0
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?

[CpawCTF] WriteUP: Challenge Level 2(ネタバレ注意)

0
Last updated at Posted at 2026-04-19

はじめに

常設CTFサイト「CpawCTF」のLevel 2を解いた際の備忘録です。
Flagそのものは掲載していませんが、解法について触れています。自力で解きたい方はご注意ください。

Level 1のWriteUPはこちら
Level 3のWriteUPはこちら

実行環境・使用ツール

  • OS: Windows 11 (WSL2)
  • 使用ソフト:
    • WSL (Linuxコマンド全般)
    • Wireshark (パケット解析)
    • WinSCP (FTP接続・ファイル転送)

Q13. [Stego] 隠されたフラグ

【概要】画像内の記号からFlagを導き出す問題。

画像を開くと、左上と右下に「.(ドット)」と「-(ダッシュ)」の羅列があります。

  1. これらをモールス信号として読み取ります。
  2. オンラインのモールス信号変換サイトでデコードします。
  3. 左上と右下の文字列を繋げるとFlagになります。

Q15. [Web] Redirect

【概要】リダイレクト時のHTTPヘッダーを確認する問題。

ブラウザでは一瞬で遷移してしまいますが、curlコマンドの-v(verbose)オプションを使うと通信の詳細を確認できます。

curl -v http://q15.ctf.cpaw.site/

出力結果のレスポンスヘッダー内にある X-FLAG 項目にFlagが記載されています。

Q16. [Network+Forensic] HTTP Traffic

【概要】パケットキャプチャ(pcap)からファイルを抽出し、Webページを再現する問題。

  1. ファイルの抽出: Wiresharkで開き、FileExport ObjectsHTTP... から全ファイルを保存します。
  2. ソースの確認: network100(1)をHTMLとして開くと「このボタンを押すんだ」というメッセージが表示されます。
  3. 環境の再現: デベロッパーツール(F12)で確認すると、画像は./img/、スクリプトは./js/を参照しています。
  4. ディレクトリ構成の作成:
    以下のようにフォルダを作成し、抽出したファイルを配置します。
    • network100(1).html(本体)
    • img/image.jpg
    • js/button2.js
  5. 実行: HTMLを開き、ボタンをクリックすると画像からFlagが読み取れます。

Q17. [Recon] Who am I ?

【概要】OSINT(公開情報調査)の問題。

問題文にあるヒント「twitter:@porisuteru」「スペシャルフォース2」でWeb検索を行います。
ヒットしたX(Twitter)の投稿画像内に、ゲームのアカウント名としてFlagが記載されています。

Q18. [Forensic] leaf in forest

【概要】膨大な文字列から特定のパターンを抽出する問題。

  1. stringsコマンドでファイル内の文字列を確認すると、大量の「lovelive!」が表示されます。
  2. sedで「lovelive!」を除去し、trで大文字と括弧のみを抽出します。
# 大文字とフラグ形式の記号のみを抽出
strings misc100 | tr -dc 'A-Z{}'

「CCCPPPAAAWWW{{{...」のように重複して出力されるため、1文字ずつ拾い上げるとFlagになります。

Q19. [Misc] Image!

【概要】OpenDocument Drawing(.odg)ファイルから情報を探す問題。

  1. fileコマンドで正体を確認。
    file misc100.zip  # 実行結果: OpenDocument Drawing
    
  2. ファイルの展開: .zipとして展開し、中の content.xml を解析します。
  3. タグの除去: XMLタグが邪魔で読みづらいため、sedでタグを取り除いてテキストのみを抽出します。
    sed 's/<[^>]*>//g' content.xml
    

表示されたテキストの中からFlagを見つけます。

Q20. [Crypto] Block Cipher

【概要】ブロック暗号の並び替え問題。

暗号文:cpaw{ruoYced_ehpigniriks_i_llrg_stae}
この文字列を4文字ずつに区切り、それぞれのブロック内を逆順に並び替えると意味の通る英文(Flag)になります。

Q21. [Reversing] reversing easy!

【概要】バイナリを逆コンパイルして解析する問題。

objdumpコマンドでアセンブリを表示します。

objdump -d rev100 | less

解析を進めると、movl(4バイト転送)やmovb(1バイト転送)命令でメモリに値を格納している箇所があります。

  • 例: movl $0x77617063, 0x46(%esp)
  • 0x77617063 をリトルエンディアン(逆順)で読み、16進数をASCII文字に変換します。
    • 63c, 70p, 61a, 77wcpaw

同様に続く命令の値を変換していくとFlagが完成します。

Q9. [Web] Baby's SQLi - Stage 1-

【概要】基本的なSQLインジェクションの問題。

「palloc_homeテーブルの2番目に先生がいる」というヒントがあります。
フォームにテーブル全件を表示させるSQLを入力します。

SELECT * FROM palloc_home

表示された結果の2行目にFlagがあります。

Q28. [Network] Can you login?

【概要】通信ログから認証情報を盗み出し、FTPサーバーへ侵入する問題。

  1. パケット解析: Wiresharkでftpフィルタをかけ、TCP Streamを追跡します。ログインに成功しているパケットから「IPアドレス」「ユーザーID」「パスワード」を特定します。
  2. FTP接続: WinSCPを用い、特定した情報でログインします。
  3. 隠しファイルの表示: ディレクトリ内には Dummy しか見えませんが、設定で「隠しファイルを表示」にするとFlagファイルが出現します。

まとめ

AIにヒントをもらいながらの挑戦でしたが、ツール(WiresharkやLinuxコマンド)の使い方など、非常に学びが多いレベルでした。
次はLevel 3に挑戦します!

0
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
0
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?