WebページのURLと、サーバのファイル一式が与えられた。
Webページにはログインフォームがあった。
web-nosql/app/routes/login.js
を見ると、ログインの判定は mongodb
の findOne
関数を用いて行っていることがわかった。
そこで、「mongodb findone」でググると、以下のページが見つかった。
An URL of a web page and the files for the server were given.
The web page had a login form.
Reading web-nosql/app/routes/login.js
, I found the checking for logging in using a function findOne
for mongodb
.
I googled "mongodb findone" and found this page:
[Mongo] findメソッドのいろいろな使い方(MySQLと比較) - YoheiM .NET
まず、
次に、このページの「検索条件を指定する(非等価比較)」を参考に、送られた /login
へのリクエストを以下のように「編集して再送信」した。
Content-Type
を application/json
にする。{"username": {"$ne": "aaaaaaa"}, "password": {"$ne": "aaaaaaa"}}
にする。
すると、 /
へリダイレクトされ、そこからまた /login
にリダイレクトされた。
この後、ログインフォームの左上「NoSQL Challenge」のリンクをクリックすると、flagが表示された。
Firstly, I opened the Network tab in the developer tool in
Then, referring "検索条件を指定する(非等価比較)" in this page, I modified the request for /login
via "Edit and Resend" in this way:
Content-Type
in the request header to application/json
.{"username": {"$ne": "aaaaaaa"}, "password": {"$ne": "aaaaaaa"}}
.
Sending this request resulted in a redirection to /
, and then redirected to /login
.
After that, I clicked the "NoSQL Challenge" link in the left top of the login form. As a result, the flag appeared.