前回、「ksnctf#3 Crawling Chaos」について解説しました。100ポイントの問題ということで、難易度が高かったです。
今回は逆に簡単な問題を解説しようと思います。
今回の問題は20ポイント問題である「ksnctf#10 #!」と「ksnctf#35 Simple Auth II」について解説していきます。
ksnctf#10 #!の解説
さっそく問題を見てみましょう。まずは「ksnctf#10 #!」からです。
問題を見ると、What’s thisという疑問文と簡単なpythonのコードが書かれています。
What’s this…これは、何?と聞かれても「Hello,World」を出力するというプスクリプトとしか言えませんが…。
しかし、よく見ると#!の部分が赤文字となっています。
そして、問題のタイトルも「#!」となっています。
なるほど…コードのことを聞かれているのではなく、「#!」は何ですかということですかね…。
確かにpythonの先頭行に「#!/usr/bin/python」という風にお決まりで書かれていますが、しっかり調べたことはなかったです。
とりあえず、「#!」をGoogleで検索してみると、
・Shebang(シバンまたはシェバン)と呼ばれる記号であること
・UNIXスクリプトの先頭行に記載され、インタプリタを指定する役割がある
※インタプリタとはコードを機械語に変換するプログラムのこと
であることが分かりました。
「#!」から始まるスクリプト先頭行について全く気にしてなかったですけど、こんな役割があったんですね。
とにかく、「#!」=SHEBANGと判明したのでこれを回答として入力してみると…
見事正解となりました。
Googleで検索しただけですぐに答えが出てきたので確かにこれは20ポイント問題だと言えますね。
ksnctf#35 Simple Auth IIの解説
続いて、「ksnctf#35 Simple Auth II」を解いていきます。
続いて、「ksnctf#35 Simple Auth II」を解いていきます。
問題を見ると、なにやらphpファイルが設置されています。
phpファイルをクリックすると、ログイン画面が表示されました。
ログインすればフラグが表示されるのでしょうか?
問題のフォームにはphpファイルのソースも置かれていました。
とりあえず、このソースの中身を見てみましょう。
この手の問題はソースの中に答えもしくはヒントがあることが多いですからね。
ソースを見ると、PHPスクリプトでフォームの入力内容を処理しているようですね。
この内容から、入力されたIDとパスワードの内容をSQLiteデータベースと照合していることが分かります。
つまり、データベースファイルを見ることが出来れば、IDとパスワードが判明するということですね。
また、データベースファイルの場所が相対パスで記述されているため、このファイルはphpファイルと同じディレクトリに保存されていることが分かります。
というわけで、URLのauth.phpの部分をdatabase.dbに変更してデータベースファイルをゲットしましょう。
database.dbをダウンロードできました。
そして、データベースファイルの中身を見ていくわけですが、今回はソフトウェア「DB Browser for SQLite」をダウンロードし、中身を確認しました。
「DB Browser for SQLite」は公式サイトからダウンロードできます。
それでは、DB Browser for SQLiteでゲットしたdatabase.dbの中身を見ていきます。
「データ閲覧」のタグを開くと、IDとパスワードの書かれたテーブルが見つかりました。パスワードの部分がそのままフラグとなっているようです。
実際にログイン画面でIDとパスワードを入力してみましょう。
パスワード部分が改めてフラグだと示されました。
解答フォームにこのフラグを入力すると、
無事、正解となりました。
まとめ
さて、今回は20ポイントの問題を2つ解いてみました。
1問目はShebangについて検索するだけなので確かに簡単でしたが、2問目はなかなか難しい気がしますね。
まぁデータベースファイルを保存さえすれば、あっさりとフラグが見つかるのでそういう点は簡単だと思いました。
今後もksnctfの問題を解説していきたいと思います。
前の問題の記事はこちらです↓
次の問題の記事はこちらです↓
コメント