# NoSQL injection Lab2 本題目標是利用 MongoDB 的查詢語法漏洞來登入 admin 帳號,而不用知道密碼。 一樣先進入網站並攔截登入請求。 ![image](https://hackmd.io/_uploads/S1PIf8F7ex.png) ![image](https://hackmd.io/_uploads/BJLHKop4eg.png) 再請求當中可以發現我們登入的資料是用 JSON 格式撰寫的, ![image](https://hackmd.io/_uploads/BytXKiaNgl.png) 所以我們先嘗試看看能不能注入 JSON 格式的東西。 ![image](https://hackmd.io/_uploads/rkOE9jT4ll.png) 顯示 302,這裡我加上正確的使用者名字試試。 ![image](https://hackmd.io/_uploads/B1U1hsp4ge.png) 看起來是可以的,系統真的用 JSON 來解析 login 資料,所以現在我們來嘗試模糊對比帳號測試。 ``` username={"$regex":"wien.*"}&password=peter ``` `$regex`:的用途可以讓我們不用驗整完整的使用者名字,換句話說,這樣的輸入可以登入 `wien` 開頭的帳號。 ![image](https://hackmd.io/_uploads/BJTsasaEel.png) 確實在旁邊的 id 中,可以得知我們是以 wiener 的帳號登入,所以以此類推。 ``` username={"$regex":"admin.*"}&password={"$ne":""} ``` ![image](https://hackmd.io/_uploads/rk2M0jaExe.png) 這裡複製管理員的 Cookie 進他帳號看看。 ![image](https://hackmd.io/_uploads/BkGsAopVlx.png) ![image](https://hackmd.io/_uploads/B1XbyhpNgx.png) ---