このページにはプロモーションが含まれています
問題情報
- タイトル:login
- カテゴリ:Web
- 難易度:Medium
- 使用ツール:ブラウザ
問題文

問題文の和訳
犬のシッターさんの兄が作ったこのサイトにログインできないのですが、助けていただけますか?
ヒント:なし
DeepL.com(無料版)で翻訳しました。
アプローチ(解法の流れ)
1. 動作を確認する
リンクからアクセスすると、ログインフォームが表示されました。

2. 試したこと
フォームに入力してみると、
Username:user
Password:aaaaaa
アラートが出ました。
Incorrect Username
続いて、検証ツールを使って調べます。
JavaScriptファイルがありました。
(async () => {
await new Promise((e => window.addEventListener("load", e))),
document.querySelector("form").addEventListener("submit", (e => {
e.preventDefault();
const r = {
u: "input[name=username]",
p: "input[name=password]"
}
, t = {};
for (const e in r)
t[e] = btoa(document.querySelector(r[e]).value).replace(/=/g, "");
return "YWRtaW4" !== t.u ? alert("Incorrect Username") : "cGljb0NURns1M3J2M3JfNTNydjNyXzUzcnYzcl81M3J2M3JfNTNydjNyfQ" !== t.p ? alert("Incorrect Password") : void alert(`Correct Password! Your flag is ${atob(t.p)}.`)
}
))
}
)();index.jsを確認すると、ブラウザ標準の Base64変換関数btoa / atob が使われています。
btoa → Base64エンコード
atob → Base64デコード
入力されたユーザ名をBase64エンコードしたものがYWRtaW4と等しい
入力されたパスワードをBase64エンコードしたものがcGljb0NURns1M3J2M3JfNTNydjNyXzUzcnYzcl81M3J2M3JfNTNydjNyfQと等しいと
フラグが返ってくると読み取れます。
3. FLAGをゲット!
試したこと:Base64デコードしてみる。
YWRtaW4admin
cGljb0NURns1M3J2M3JfNTNydjNyXzUzcnYzcl81M3J2M3JfNTNydjNyfQ(フラグそのもの)
学んだこと
btoa / atob はブラウザ標準のBase64変換関数であり、暗号化ではなく単なるエンコードである
Base64で比較されている文字列は、デコードすればそのまま正しい認証情報が分かる
検証ツールでJavaScriptを読むことで、実際に入力すべき値やフラグを直接特定できる
はなまるお読みいただきありがとうございました!









コメント