はじめに
常設CTFサイト「CpawCTF」のLevel 1を解いた際の記録です。
flagそのものはもちろん書いていませんが、全問題について解法が書いてあるので、自力で解きたい方は閲覧をお控えください。
レベル2のWriteUPはこちら
レベル3のWriteUPはこちら
0. 環境構築
前提条件
利用PCはWindows11、WSLインストール済み
WSL(Linuxモード)への切り替え
ターミナルを開きます。
Windows標準のコマンド(PowerShell)では file コマンドなどが使えないため、WSLを呼び出します。
wsl
これでLinuxのツールが使えるようになります。
Q1. [Misc] Test Problem
問題文に書いてある答えを入力欄に貼り付ければOK
Q2. [Crypto] Classical Cipher
アルファベットを一定数ずつずらしたシーザー暗号。
私はCyberChefを使いました。
Q3. [Reversing] Can you execute?
拡張子がないファイル exec_me を実行し、フラグを得る問題。
WSLを使いました。
まず、file コマンドでバイナリの種類を特定。
file exec_me
-
結果:
ELF 64-bit LSB executable... - 判明: これは Linux用の実行ファイル
ファイルに「実行権限」を付与。
chmod +x exec_me # 実行権限を付与
./exec_me # カレントディレクトリを指定して実行
これでコンソールにフラグが表示されました。
Q4. [Misc]Can you open this file ?
拡張子がなく、どのアプリで開くべきか不明なファイルを調査する。
WSL使用。
file コマンドでシグネチャを確認。
file exec_me
- 結果: ... Name of Creating Application: Microsoft Office Word`
- 判明: 正体はWord文書(.doc)
Wordがない環境だったためGoogleドキュメントでファイルを開くと、中に画像としてflagが記載されていました。
Q5. [Web] HTML
ブラウザでデベロッパーツールを開き、HTML要素を見ていくと、中にflagが書かれていました。
Q6. [Forensics] river
画像 river.jpg の撮影場所にある川の名前を特定する。
WSLで画像のメタデータ(Exif情報)を抽出するexiftoolをインストール。
# ツールのインストール
sudo apt install libimage-exiftool-perl -y
# GPS情報の抽出
exiftool river.jpg
GPS Latitudeという項目に座標が書かれている。
degを°に変換してからGoogleMAPに貼り付けて検索すると、川の名前が得られる。
degのまま貼り付けても正しい場所を表示してくれませんでした。
Q7. [Network]pcap
ネットワークキャプチャファイル(pcap)からフラグを探す。
パケットの中にテキスト形式のフラグが流れていないか、strings コマンドで検索します。
strings network.pcap
Q8. [Crypto] Hash! Hash! Hash!
SHA1でハッシュ化された文字列を元に戻す。
オンラインデータベース**CrackStation** を使いました。
ハッシュ値を入力して「Crack Hashes」ボタンを押すと、元の文字列(プレーンテキスト)が表示されました。
Q9. [PPC]並べ替えろ!
与えられる数値の配列を降順に並べ替えて結合した文字列がflagになります。
pythonで以下を実行して、出力結果をflagとして貼り付け
l=(与えられた数値をリスト形式で貼り付け)#例[3,1,14]
l.sort()#[1,3,14]
print(*l[::-1],sep="")#1431
まとめ
CTF初挑戦でしたが、flagを見つけたときにワクワクした気持ちになります。
競技プログラミングでAC出した時の喜びとはまた違って、楽しみが増えました。
次はLevel 2。