【picoCTF – Write Up】 login(Medium – Web Exploitation)

picoCTF loginのアイキャッチ

このページにはプロモーションが含まれています

目次
プログラミング言語の人気オンラインコース

問題情報

  • タイトル:login
  • カテゴリ:Web
  • 難易度:Medium
  • 使用ツール:ブラウザ

問題文

loginの問題文の画像

問題文の和訳

犬のシッターさんの兄が作ったこのサイトにログインできないのですが、助けていただけますか?

ヒント:なし

DeepL.com(無料版)で翻訳しました。

アプローチ(解法の流れ)

1. 動作を確認する

リンクからアクセスすると、ログインフォームが表示されました。

loginフォームの画像

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を読むことで、実際に入力すべき値やフラグを直接特定できる

はなまる

お読みいただきありがとうございました!

よかったらシェアしてください!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

セキュリティを中心に学習・実践しています。
CTFのWrite Upや検証記録を発信中。
[保有資格:ITパスポート、基本情報技術者、応用情報技術者]

コメント

コメントする

CAPTCHA


目次