Shikata Ga Nai

Private? There is no such things.

Juice ShopのLogin Bjoernをやってみた

Hello there, ('ω')ノ

 

パスワードを変更したり、SQLインジェクションを適用したり。

Googleアカウントをハッキングしたりしないで。

BjoernのGmailアカウントでログインしなさいと。

 

f:id:ThisIsOne:20210705093649p:plain

 

まずは、管理者にログインして。

 

f:id:ThisIsOne:20210705094215p:plain

 

下記の管理者パネルにアクセスすると。

中にgmail.comのアドレスがあって。

GmailやTwitterなどのアカウントを使用して他のWebサービスにログインできるなら。

これは通常、Oauthを介して行われるわけで。

 http://192.168.0.10:3000/#/administration

 

f:id:ThisIsOne:20210705094248p:plain

 

JavaScriptに欠陥がないかどうかを確認することに。

ソースコードにはいくつかのloginの文字列があって。

何が初期化されていたりと。

また、oauthを処理する行があって、その中にはpasswordの文字もあって。

どうもメールアドレスがパラメータから出ていることがわって。

そして、tと呼ばれものが縮小されて読みにくくしているようで。

 

f:id:ThisIsOne:20210705111244p:plain

 

とりあえず、tと呼ばれるものがユーザオブジェクトと仮定して。

そのメールアドレスがパラメータに格納されて。

パスワードがパラメータからできているとして。

 

f:id:ThisIsOne:20210705111913p:plain

 

すると、eはここで定義されて。

btoa関数を使用して定義されて、メールアドレスがbtoa関数に渡されているので。

JavaScriptのbtoa関数について確認することに。

btoaは、base64で文字列をエンコードするメソッドのようで。

 https://www.w3schools.com/jsref/met_win_btoa.asp

 

f:id:ThisIsOne:20210705112125p:plain

 

下記のコードをコンソールで一つずつ確認することに。

 const e = btoa(t.email.split('').reverse().join(''));

 

メールアドレスは、下記を。

 bjoern.kimminich@gmail.com

 

最後にbtoa関数は、window.btoa()を使用して文字列を変換するようなので。

window.btoa()で、Base64にエンコードすると。

 bW9jLmxpYW1nQGhjaW5pbW1pay5ucmVvamI=

 

f:id:ThisIsOne:20210705113859p:plain

 

さきほどのメールアドレスとエンコードしたパスワードでログインすると。

 

f:id:ThisIsOne:20210705114036p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210705114054p:plain

 

Best regards, (^^ゞ