0x41414141 CTFとjustCTF [*] 2020(復習)
- はじめに
- hackme (0x41414141 CTF)
- PDF is broken, and so is this file (justCTF [*] 2020)
- Computeration (justCTF [*] 2020)
はじめに
個人的な復習用のまとめなので、writeupを見たい方はこちらの参考サイトを見てください。
ctf/2021/0x41414141/hackme at master · ryan-cd/ctf · GitHub
Writeup: justCTF [*] 2020 - nevi.dev
CTFtime.org / justCTF [*] 2020 / Computeration / Writeup
hackme (0x41414141 CTF)
コマンドを4文字だけ実行できる中で、ルートディレクトリにあるflag.txt
を出力する問題。
# catファイルを作成 GET /?cmd=>cat # ワイルドカードでcatのファイル名を取得してコマンド実行できる GET /?cmd=*+/f*
sh<filename
とすることでファイル内のコマンドを実行することができるので、catファイルと/f*ファイルを作れば、ls>filename
で実行コマンドのファイルが作れると思ったんですが、「/
込のファイル名はだめ」「ls時のファイル並び順で制限がある」「echo
などが使えず/
単体をファイルに書き込めない」などで挫折しました。
PDF is broken, and so is this file (justCTF [*] 2020)
PDFファイルの中に隠れているフラグを見つける問題。
xref
で参照されていない9990
と`4919
オブジェクトが怪しい。binwalk
で抽出できてしまうので、マジックナンバーで4919のオブジェクトが画像ファイルだとわかる。
$binwalk -e challenge.pdf DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- ... 745469 0xB5FFD Zlib compressed data, default compression ... $ xxd -r -p B5FFD | file - /dev/stdin: JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment length 16, baseline, precision 8, 1182x1182, components 3 $ xxd -r -p B5FFD > flag.jpeg
B5FFD.zlib
は圧縮されているままのバージョン。B5FFD
は回答されたデータがテキストでダンプされているので、それをファイルに保存し直す。
zlibから出力
zlib-flate -uncompress
でbinwalk
に完全に頼らなくても場所がわかれば、ある程度手動でいける。zlib-flate
はqpdf
パッケージに内包。
$zlib-flate -uncompress < B5FFD.zlib | xxd -r -p - > flag.jpeg
Computeration (justCTF [*] 2020)
ReDos
の問題。対象にアクセスして応答差からフラグを予測するページを作ってadminに踏ませて解くようです。
ここのページで正規表現の動きが見える。Regex Debugger
を使うと、マッチ試行stepが算出されます。今回のシグネチャ^(?=justCTF{).*.*.*.*.*.*.*!!!$
、末尾は絶対にマッチしない文字置くとstep数が圧倒的に増えますね。
Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript