セキュリティ系の勉強・その他開発メモとか雑談. Twitter, ブログカテゴリ一覧
本ブログはあくまでセキュリティに関する情報共有の一環として作成したものであり,公開されているシステム等に許可なく実行するなど、違法な行為を助長するものではありません.

0x41414141 CTFと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 -uncompressbinwalkに完全に頼らなくても場所がわかれば、ある程度手動でいける。zlib-flateqpdfパッケージに内包。

$zlib-flate -uncompress < B5FFD.zlib | xxd -r -p - > flag.jpeg

Computeration (justCTF [*] 2020)

ReDosの問題。対象にアクセスして応答差からフラグを予測するページを作ってadminに踏ませて解くようです。
ここのページで正規表現の動きが見える。Regex Debuggerを使うと、マッチ試行stepが算出されます。今回のシグネチャ^(?=justCTF{).*.*.*.*.*.*.*!!!$、末尾は絶対にマッチしない文字置くとstep数が圧倒的に増えますね。
f:id:thinline196:20210202173952p:plain

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript