はじめに
久しぶりの記事になっています… 少し基礎知識を増やしたいなという事で半年は本を読んだり、インプット多めの期間となっていました。また、学校のオンライン講義移行等で生活の変わりように慣れるのに少し手間取ったりしていました。💦 それでは、問題を解いていきたいと思います。
本題
問題はこんな感じ。adminでログインしたらフラグが出ますよ~と言った感じでしょうか。 一先ず、URLにアクセス。ヒントを見ても、サイトを見てもJWTについて強く触れているのでそれについて調べてみる…
JWTとは何なのか?JSON Web Tokenの略称であり、属性情報(Claim)をJSONデータ構造で表現したトークンの仕様らしい。 分かり易く説明しているサイトがあったのでリンクを貼っておきます。ほぉ、こんなものがあったのかと。 techblog.yahoo.co.jp という事で""hoge""と、""admin""でログインしてみる。確かに、""hoge""の方ではログイン出来たのでJWTがクッキーの中にある。ついでにデコードした内容も貼っておきます
一先ず、安直にクッキーの改竄を考えた。userをadminにすれば良いのでは無かろうかと。クッキーを入れ替えリロード。すると、Internal Server Errorエラーが出た。どうやらダメらしい。
次はどうしよう。下の文を読み返してみた。Johnにリンクがあり、John The Ripperのgithubページに飛ばされた。まぁ、使えという事だろう。 john the ripper hacking jwt と検索した感じで行くと、弱い秘密鍵を見つけ出すことが出来るらしい。という事で、おすすめのパスワードリストとされているrockyou.txtを辞書として使い攻撃してみる…コマンドとしては以下の通り。出てきた秘密鍵をさっきの改竄したjwtに入れ直して、変更したクッキーを入れてページをリロード。フラグが出た。
sudo john /home/kali/Desktop/pico.jwt --wordlist=/home/kali/Desktop/rockyou.txt
最後に
かなり久しぶりにCTFの問題を解いてみました。以前よりも、意味がより理解できるようになっていたので少し安心しました。 JWTに対する攻撃方法が他にもヘッダーのalgフィールドをnoneにしてしまう方法など、プラスアルファの知識も増えて個人的には良かったです。 今後も、時間が取れれば少しずつですが更新していきたいと思います。