[CSCamp CTF]解けなかった問題forensics1のwriteupを読んでみた

注意

この記事はwriteup記事ではありません。
僕が出場しているときに、解くことができなかったので、公開されている
writeupを読んで反省しよう、という内容です。

writeupを読みたい、という方はGoogle検索するといくつか
記事が公開されているので、そちらをどうぞ

今回読ませていただいたのはこちらのwriteupです。

問題の概要(すごくザックリ)

本文

ハッキングされてデータベースの中身が消えちゃったので、バックアップファイル
から復元しないといけないんだけど、バックアップファイルが改ざんされて、不正ユーザ
が紛れ込んでしまいました。不正に追加されたユーザは誰ですか?
全員の名前をカンマ区切りでmd5したものがフラグです。

といった問題

問題ファイルとして配布されていたのは、rarで圧縮されたファイルで
中身は以下のsqlファイル

これをmysqlに実際に作成して、色々ソートしたり、名前をひとつひとつググってみたり
したけど、特にアテはありませんでした・・・。
(名前はどれをGoogle検索してもFacebookやYoutubeが出てくる、いわゆるよくある名前っぽい)

permissionの値が400-449の範囲だったので、もしかしたらこの数字は
Linuxなどで用いられるファイル権限の数字ではないか、と思って
408やら449やらの、変なpermissionの値を持ったユーザを抽出してみたりしたけど、
これもダメでした。

そこで競技終了後に参加者の方が公開してくださったwriteupを拝見させていただきました。
こちら

これでフラグが出ています。すげー!
ちょっとパッと見何をしているかわからなかったので
読みやすく直してみる

つまりポイントは0x0dで、これが含まれる行の次の行に含まれるユーザが不正に追加されたユーザである
という内容のスクリプトでした。

これはどういうことか、というと、0x0dはキーボードでいう「Enter」キーのコード。
ここでキーボードのEnterが押されて、次の行が挿入された可能性がある、ということ
だと思います。

この発想はなかった・・・orz

これに関して、以下の記事が非常に参考になりました。ありがとうございました。

改行コードの話

hexdump -C したものをファイルに出力してvimで見てみました。

Screen Shot 2013-11-19 at 0.38.59

うわ・・・確かに正規に追加されたと思われる0x0a(LF)とは別に0x0d(CR)が含まれている
行が5行だけある・・・一度バイナリエディタで中身みたのに・・・うぅ・・・

というわけで不正ユーザは
Aurora Davis,Melodie Patton,Octavius Gamble,Lara Benson,Leilani Rivas
の5人でした。

とても勉強になりました。

CSCamp CTFの運営のみなさん、一緒に参加してくれたよかろうもんのメンバーのみなさん、writeupを公開してくれている他の参加者の方々
ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です