アオカケスの鳥かご

日々の出来事を綴っていきたい

SECCON Beginners CTF 2019 writeup

SECCON Beginners CTF 2019に参加しました。

比較的簡単な問題のwriteupです。

Misc

Welcome[51]

SECCON Beginners CTFのIRCチャンネルにアクセスするだけです。

ctf4b{welcome_to_seccon_beginners_ctf}

containers[71]

とりあえずfileコマンドを実行してみる。

$ file containers
containers: data

dataファイルなので hexdump で見てみます。
f:id:aokakes:20190525230758p:plain

どうやらpngファイルのようです。
拡張子を.pngにしても開くことは出来ません。
f:id:aokakes:20190525230948p:plain

foremost でやってみます。

$ foremost containers

たくさん出てきました。
f:id:aokakes:20190525231144p:plain

全部繋げばflagの完成です。

ctf4b{e52df60c058746a66e4ac4f34db6fc81}

Sliding puzzle[206]

8パズルです。競プロ。

自力で8パズルを解くプログラムを用意する気力は無いので、ありがたくお借りします。
qiita.com

変更点はsocket通信回りと、result_print関数内で0の移動方向を記録するようにした部分です。

100問解いたらflagが貰えました。
f:id:aokakes:20190525235621p:plain

ctf4b{fe6f512c15daf77a2f93b6a5771af2f723422c72}

Reversing

Seccompare[57]

とりあえずfileコマンドを実行してみる。
f:id:aokakes:20190525231505p:plain

実行ファイルなのでidaで開いてみます。
f:id:aokakes:20190525231805p:plain

16進数でflagが書いてありました。asciiに変換すればflagになります。

ctf4b{e52df60c058746a66e4ac4f34db6fc81}

Web

Ramen[73]

美味しそうなラーメンの画像は何だか悪意を感じます。絶対に夜に解いてはいけない。

名前を入力する場所があるので、まずは色々試してみます。


「ん」でも全部表示されるのでLIKE句であることが分かります。
f:id:aokakes:20190525233703p:plain

SQL文を推測してみると、多分こんな感じ。

sql = "select name, text from users where username like '%".$username."%";

これをもとにSQLインジェクションが成立しそうな入力をしてみます。
f:id:aokakes:20190525233911p:plain

後ろの 1 = '1 が効いています。

SQLインジェクション脆弱性があることは分かりましたが、flagがどのテーブルにあるのか分からないので、information_schema.tables でDB内のテーブルを表示してみます。

a' UNION SELECT table_name,2 FROM information_schema.tables -- 

f:id:aokakes:20190525234245p:plain
下のほうにflagというテーブルがありました。

まだカラム名は分かりませんが、おそらくflagだろうということで入力してみたらいけました。

a' UNION SELECT flag,2 FROM flag -- 

f:id:aokakes:20190525234441p:plain

ctf4b{a_simple_sql_injection_with_union_select}

katsudon[101]

ラーメンの次はカツ丼です。画像が無いのはせめてもの救いでしょうか。

店舗一覧にシリアルコードがあります。ハイフンの前までがbase64のようです。

複数のサイトでデコードしてみたら以下のサイトでなんかいけました。
BASE64エンコード - UIC

ctf4b{K33P_Y0UR_53CR37_K3Y_B453}

Crypto

So Tired[115]

とても長い暗号文が添付されています。

base64感が満載なので、base64でデコードしてみます。

分かりそうでよく分かりません。
ggってみると、zlibでzipエンコードするとこんな感じになるようです。

decompressするとまたbase64エンコードされた文字列が出てきました。
問題のタイトルが「So Tired」なので、おそらくエンコードし過ぎて疲れてしまったのでしょう。

最終的には ctf4b{ が現れるはずなので、出てくるまでループさせることにします。

f:id:aokakes:20190525233149p:plain

500回目でflagが出てきました。

ctf4b{very_l0ng_l0ng_BASE64_3nc0ding}

まとめ

beginnersだし、もう少し手軽に解かせてくれるだろうと思っていました。
つまり、私もまだbeginnersの域を脱していないということでしょうか。もっと精進します。