SECCON Beginners CTF 2019 writeup
SECCON Beginners CTF 2019に参加しました。
比較的簡単な問題のwriteupです。
Misc
containers[71]
とりあえずfileコマンドを実行してみる。
$ file containers containers: data
dataファイルなので hexdump で見てみます。
どうやらpngファイルのようです。
拡張子を.pngにしても開くことは出来ません。
foremost でやってみます。
$ foremost containers
たくさん出てきました。
全部繋げばflagの完成です。
ctf4b{e52df60c058746a66e4ac4f34db6fc81}
Sliding puzzle[206]
8パズルです。競プロ。
自力で8パズルを解くプログラムを用意する気力は無いので、ありがたくお借りします。
qiita.com
変更点はsocket通信回りと、result_print関数内で0の移動方向を記録するようにした部分です。
100問解いたらflagが貰えました。
ctf4b{fe6f512c15daf77a2f93b6a5771af2f723422c72}
Reversing
Seccompare[57]
とりあえずfileコマンドを実行してみる。
実行ファイルなのでidaで開いてみます。
16進数でflagが書いてありました。asciiに変換すればflagになります。
ctf4b{e52df60c058746a66e4ac4f34db6fc81}
Web
Ramen[73]
美味しそうなラーメンの画像は何だか悪意を感じます。絶対に夜に解いてはいけない。
名前を入力する場所があるので、まずは色々試してみます。
「ん」でも全部表示されるのでLIKE句であることが分かります。
SQL文を推測してみると、多分こんな感じ。
sql = "select name, text from users where username like '%".$username."%";
これをもとにSQLインジェクションが成立しそうな入力をしてみます。
後ろの 1 = '1 が効いています。
SQLインジェクションの脆弱性があることは分かりましたが、flagがどのテーブルにあるのか分からないので、information_schema.tables でDB内のテーブルを表示してみます。
a' UNION SELECT table_name,2 FROM information_schema.tables --
下のほうにflagというテーブルがありました。
まだカラム名は分かりませんが、おそらくflagだろうということで入力してみたらいけました。
a' UNION SELECT flag,2 FROM flag --
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{ が現れるはずなので、出てくるまでループさせることにします。
500回目でflagが出てきました。
ctf4b{very_l0ng_l0ng_BASE64_3nc0ding}
まとめ
beginnersだし、もう少し手軽に解かせてくれるだろうと思っていました。
つまり、私もまだbeginnersの域を脱していないということでしょうか。もっと精進します。