セキュリティの勉強しようとして調べたらCTF(Capture The Flag)っていう競技が出てきたので遊んでみた。もう答えもたくさんあがっているけど,
知らなかったこともあるので一応アウトプット。CpawCTFのlevel1。
問題
[Crypto] Classical Cipher
解答がすべてcpaw{答え}
の形式になるので、アルファベットを3前にずらす。ブラウザのF12からコンソールで
const str = "Fdhvdu_flskhu_lv_fodvvlfdo_flskhu";
let ans = "";
for(let i=0;i<str.length;i++){
ans += String.fromCharCode(str.charCodeAt(i) - 3);
}
console.log(ans);
でいった。_
が\
なってエラーが出たが、アルファベット以外は直さないらしく、{_}
はそのまま出力。
[Reversing] Can you execute ?
file
コマンドで拡張子を調べられるらしい。
ELFファイルでinterpreterはlinuxなんちゃらと出てきたので、ubuntuにコピーして./ exec_me
でこたえ。まぁfile
ででたメッセージあんまよんでなくてググったけど。。。
[Misc] Can you open this file ?
これも拡張子がないのでfile
で調べると今度はWordで作りました、みたいな文が出るのでWordで開く。
[Web] HTML Page
F12でソースコード内をflagで検索したらmeta dataのところに書いてある。
[Forensics] River
指示通りjpgファイルのプロパティみたら位置情報とか撮影日の情報書いてあった。google mapに経度と緯度入力したらデカい画面で見られた
[Network]pcap
ちょっと時間かかった。wiresharkっていうパケットキャプチャツールを入れて、pcapファイルをそれで開く。すぐ消すしdockerでインストール。https://hub.docker.com/r/linuxserver/wireshark が見つかった。
# 上記のHPに書いてある
docker create \
--name=wireshark \
--net=host \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-p 3000:3000 `#optional` \
-v /path/to/config:/config \
--restart unless-stopped \
linuxserver/wireshark
docker container start wireshark
[Crypto]HashHashHash!
ググったら出てきたので以下のサイトで戻してもらった。
https://hashtoolkit.com/decrypt-hash/?hash=e4c6bced9edff99746401bd077afa92860f83de3
[PPC]並べ替えろ!
これもブラウザのコンソールから。
javascriptの配列のsort、数値の並べ替えにcompare関数が必要って知らんかった...
console.log(((arr.sort((a,b)=>b-a)).join("")));
まとめ
面白そうだから本買ってみるけど、初心者が問題解く→解説見て勉強みたいな環境が競プロほど整ってないのか、Atcoder的なとりあえずここやっとけ的なものがわからなかった。解説がないサイトが多い?