chickが送るBeginners CTF 2019 Dump(Misc)の解説

はじめまして、chickです。
DumpのWriteUpを書きます。

(ほぼ)ワンライナーなので参考にはなりにくいかも...

DLしたdumpファイルをWiresharkなどで開くと、こんな感じf:id:falconctf:20190616234413p:plainになる。
ざっと見た感じ、ICMP,TCP,HTTPのパケットしかないようなので、適当にHTTPパケットに目星をつけた。
とりあえず抽出したらWebshellでhexdumpを投げてるっぽいので、戻りパケットのHTMLファイルをエクスポート(追跡->HTTPストリーム->保存)する。f:id:falconctf:20190616234651p:plain

中を見たら8進数3文字区切りの文字列が出てきたので、読めるようにしていく。

cat dump_export | sed 1,17d | head -n -2 | tr " " "\n" | sed s/^/0/g | while read line; do printf %x\\n $line; done | sed /^.$/i0 | tr -d "\n" | xxd -r -p > bin_export
これでフラグが入っているファイルが復元できるので、小分けにして解説していきます。

cat dump_export <- エクスポートしたファイルをcatする。これをしないと何も始まらない。

sed 1,17d <- 1〜17行目がHTMLのタグとかヘッダ情報で邪魔だったので消す。

head -n -2 <- 末尾2行もタグの括りで邪魔だったので消す。

tr " " "\n" <- 16進数に変換するときにスペース区切りだと都合が悪いので改行させる。

sed s/^/0/g <- 3文字区切りだと16進数に変換するときに都合が悪かったので行頭に0を追加する。

while read line; do printf %x\\n $line; done <- printfコマンドで1行ずつ16進数に変換していく。

sed /^.$/i0 <- 16進数に変換したときに先頭に0を足してくれなかったので足す。

tr -d "\n" <- バイナリ的に改行が邪魔なので消す。

xxd -r -p > bin_export <- 16進数のバイナリをファイルに復元する

fileコマンドで見たらgzipだったので展開したらtarアーカイブファイルが出てきたので展開
ファイルの展開まで1行で書くなら、
cat dump_export | sed 1,17d | head -n -2 | tr " " "\n" | sed s/^/0/g | while read line; do printf %x\\n $line; done | sed /^.$/i0 | tr -d "\n" | xxd -r -p > bin_export && tar -zxf bin_export

画像ファイルが出てくるので、開いてみるとFlagが出てきた。
いつかtcpdumpコマンドとsed,awkあたりでダンプファイルのエクスポートまでワンライナーで書きたい。