搭建DVWA实验靶场,选择Medium级别,选择SQL Injection(Blind),写出获取库名、表名、列名
时间: 2023-12-21 19:06:14 浏览: 106
首先,需要说明的是,进行SQL注入攻击是非常危险的行为,必须在合法和安全的环境下进行。
在Medium级别的SQL注入(Blind)实验中,我们需要在页面输入框中输入恶意的SQL语句,来获取数据库的信息。
以下是获取库名、表名、列名的步骤:
1. 获取数据库名称:
```
' or 1=1 union select 1,database(),3#
```
这个语句的意思是:在输入框中输入单引号('),然后加上`or 1=1`,这是为了让整个语句返回真。紧接着,使用`union`关键字,将新查询的结果与原查询的结果合并,然后使用`select`关键字,查询`1`、`database()`和`3`。其中,`database()`是MySQL的一个系统函数,用于获取当前数据库的名称。
2. 获取表名:
```
' or 1=1 union select 1,table_name,3 from information_schema.tables where table_schema=database() #
```
这个语句的意思是:同样是输入单引号('),然后加上`or 1=1`,使用`union`关键字,将新查询的结果与原查询的结果合并,然后使用`select`关键字,查询`1`、`table_name`和`3`。在这个语句中,我们还加入了`from`关键字和`information_schema.tables`,这是用于查询表名的系统表,同时使用`where`关键字和`table_schema=database()`,用于获取当前数据库中的所有表的信息。
3. 获取列名:
```
' or 1=1 union select 1,column_name,3 from information_schema.columns where table_name='users' #
```
这个语句的意思是:同样是输入单引号('),然后加上`or 1=1`,使用`union`关键字,将新查询的结果与原查询的结果合并,然后使用`select`关键字,查询`1`、`column_name`和`3`。在这个语句中,我们又加入了`from`关键字和`information_schema.columns`,这是用于查询列名的系统表,同时使用`where`关键字和`table_name='users'`,用于获取`users`表中的所有列的信息。
需要注意的是,这里我们假设要获取的是`users`表的列名,如果要获取其他表的列名,需要将`table_name='users'`改为相应的表名。
阅读全文