はじめに はじめに リアルタイムではないですが、AlpacaHack Round 2の問題に挑戦してみます。 今回は最初の問題の「Simple Login」を解いてみます。 ジャンルとしては「Web」とのことです。 CTFの問題はまだ数問しか解いたことがないので初心者も初心者ですが、 調べながらやっていこうと思います。
AlpacaHack Round 2のトップページ
AlpacaHack AlpacaHackへのリンクはこちら
AlpacaHackのサイトへのリンク
私のCTF環境 Windows 11/WSL2 Ubuntu 22.04 LTS 前回の記事 2024年8月19日の記事です。
AlpacaHackで始めるCTF入門3:初めてのCTFに参加
Simple Login 問題を確認 問題はこんな感じです。 ログイン処理があるウェブサイトが題材のようです。 これまでCTFに参加してこなかったのでCTFの普通というものが分かっていないですが、基本的にはCTFでは問題文的なものはないっぽいです(もちろん問題文があるコンテストもあるとは思います)。 flagを回収するというルールは変わらないので問題文は必要ないのかもしれません。
問題情報
問題用サーバにアクセスしてみる 「simple-login.tar.gz」をクリックすると問題のデータをダウンロードできます。 「.tar.gz」は圧縮ファイルなので展開します。 中身を確認するとウェブサイトのトップページとログインページのHTMLファイル、サーバ側の処理のPythonスクリプト、データベースのファイルが存在しています。
次に「Spawn Challenge Server」ボタンをクリックして問題用サーバを起動します。 とりあえずアクセスしてみるとログイン画面が表示されます。 データベースのファイルを読んでみるとユーザ名がadminでパスワードがpassのユーザデータがあるっぽいので入力してみます (hackerというユーザもいる)。
INSERT INTO users (username, password) VALUES ('admin', 'pass'); INSERT INTO users (username, password) VALUES ('hacker', '1337'); ログイン画面↓
ログイン画面
ログインできるとこのような表示になります↓
ログインできた
flagの場所を確認 データベースのファイルを読んでみると「flag」が挿入されている箇所が見つかるので、おそらくデータベースからflagを奪取できれば良いのだろうと分かります。
INSERT INTO flag (value) VALUES ('Alpaca{REDACTED}'); flagを奪取する方針 ウェブ上での動作は確認できたのでサーバ側の処理も確認します。 Pythonスクリプトを読んでみるとログインページにPOSTされた時に、 データベースからユーザ情報を照合しているようです。 つまりここでSQLインジェクションを行える可能性があります。
...