各数据库注入
数据库分类
- 关系型数据库(RDBMS,全称"Relational DataBase System")
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)、
- Oracle数据库
- MySQL数据库
- MariaDB数据库
- SQL Server数据库
- Access数据库
- PostgreSQL数据库
- 非关系型数据库(NOSQL)
- 键值(key—value)存储数据库
键值数据库就类似传统中语言中使用的哈希表。
- 列存储(column-oriented)数据库
列存储数据库将数据库存储的列族(column family)中,一个列族存储经常被一起查询的相关数据
- 面向文档(Document-Oriented)数据库
文档型数据库的灵感来自于lotus notes办公软件的。而且它同第一种键值存储相类似。该类型的数据库模型是版本化的文档,半结构化的文档以特定的格式存储,
- 图像(Graph)数据库
图形数据库允许我们将数据库以图的方式存储。实体被称作为顶点,而而实体之间的关系则会被作为边。
redis(key-value) MongoDB(Document-oriented)
access注入
Access数据库保存在网站源码下面,自己网站数据库独立存在,所以无法进行跨库,也没有文件读写的操作。
Access注入是暴力猜解 Access数据结构(access只有一个数据库)
Access数据库
表名
列名
数据
没有库这个概念 只有表这个概念
access偏移注入
借用数据库的自连接查询让数据库内部发生乱序,从而偏移出所需要的字段在我们的页面上显示
解决知道Access数据库中知道表名,但是得不到字段的sql注入困境
判断表内存在的字段个数
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin 错误
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin 正确
说明了admin表下有6个字段;
爆列名
一级偏移
union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)
二级偏移
union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)
基本公式为:order by 出的字段数减去*号的字段数,然而再用order by的字段数减去2倍刚才得出来的答案;
这是因为联合查询出来的数据拼成了一个表,字段是上个表的字段,下面的数据是联合查询的表的数据,而from后面的表内联后显示的数据列就多了一倍,所以要减去两倍的字段数,而当想要的数据列正好和前面的表的回显位一样时才会爆出数据
SQL server/MSSQL注入
函数解释
- EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False exists(sql)
- substring ()是用来截取一个栏位资料中的其中一部分。
- quotename()的主要作用就是在存储过程中,给列名、表名等加个[]、’’等以保证sql语句能正常执行
- CAST () 将某种数据类型的表达式显式转换为另一种数据类型
- STR()函数用于将数值数据转换为字符数据
- TOP 子句用于规定要返回的记录的数目。
payload
http://www.myhack58.com/Article/html/3/8/2015/63146.htm
PostgraSQL注入
https://www.webshell.cc/524.html
https://www.cnblogs.com/yilishazi/p/14710349.html
https://www.jianshu.com/p/ba0297da2c2e
Oracle注入
https://www.cnblogs.com/peterpan0707007/p/8242119.html
MongoDB注入
https://blog.csdn.net/weixin_33881753/article/details/87981552

浙公网安备 33010602011771号