一.DVWA介绍

1.1 DVWA简介

DVWA是一款基于PHP和MYSQL开发的web靶场练习平台,集成了常见的web漏洞如sql注入,XSS,密码破解等常见漏洞。旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

1.2 DVWA模块

DVWA共有十个模块:

Brute Force(暴力(破解))

Command Injection(命令行注入)

CSRF(跨站请求伪造)

File Inclusion(文件包含)

File Upload(文件上传)

Insecure CAPTCHA (不安全的验证码)

SQL Injection(SQL注入)

SQL Injection(Blind)(SQL盲注)

XSS(Reflected)(反射型跨站脚本)

XSS(Stored)(存储型跨站脚本)

1.3 DVWA 安全级别

一般情况下,DVWA一共有四种安全级别,分别为:

Low、Medium、High、Impossible

二.DVWA的搭建

2.1 phpstudy的搭建

phpstudy下载地址小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)

下载完后双击压缩包中的应用程序

选择路径,这里我存储在D盘中

然后就安装成功了

2.2DVWA的搭建

DVWA的官网DVWA - 该死的易受攻击的Web应用程序

将其解压到PHPstudy路径下的PHPTutorial下的WWW目录下

解压后进入DVWA下的config文件打开config.inc.php文件

将p@ssw0rd 修改为 root

然后在浏览器中访问http://127.0.0.1/DVWA-master/setup.php,然后点击网站下方的Create/Reset Database按钮

接着会跳转到DVWA的登录页面默认用户名:admin 默认密码:password 成功登录

三.SQL注入漏洞

3.1 SQL注入原理

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

3.2 SQL注入分类

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

3.3 SQL注入思路

(1).判断是否存在注入,注入是字符型还是数字型

(2).猜解SQL查询语句中的字段数

(3).确定回显位置

(4).获取当前数据库

(5).获取数据库中的表

(6).获取表中的字段名

(7).得到数据

3.4 SQL注入绕过方法

(1)注释符号绕过         (2)大小写绕过         (3)内联注释绕过

(4)特殊编码绕过         (5)空格过滤绕过       (6)过滤or and xor not 绕过

四.SQL注入漏洞的分析

4.1 定义

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

4.2 原因

SQL 注入漏洞存在的原因,就是拼接SQL参数。也就是将用于输入的查询参数,直接拼接在SQL语句中,导致了SQL注入漏洞。

web 开发人员无法保证所有的输入都已经过滤

攻击者利用发送给服务器的输入参数构造可执行的 SQL 代码(可加入到 get 请求、 post 谓求、 http 头信思、 cookie 中)

数据库未做相应的安全配置

五.SQL Injection

1.low级别

(1)判断注入类型,是数字型注入,还是字符型注入

我们输入1,看到正确返回值

我们输入1',看到报错了

我们可以猜出到是字符型注入,我们继续输入1' and '1' ='1和1' and '1'='2。

我们根据id=1’报错和id=1’ and ‘1’=’1正确,我们可以知道是字符型注入,查看源代码知道就是字符型注入。

(2)判断字段数                                     order by

我们使用order by 进行判断字段数, 至到order by 进行报错时候就是字段数

id=1' order by 1#没有报错

id=1' order by 2# 没有报错

id=1' order by 3#时报错了,说明字段只有2列

(3)判断回显位置                       union select 1,2#

可以知道回显位置 在这二个地方

(4)判断数据库                                     union select 1,database()#

(5)获取表名          1'  union select 1,group_concat(table_name) from information_schema.tables where 获取字段名 tables_schema=database()#

(6)获取字段名                  1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

(7)获取数据    1' union select user,password from users #

2.medium级别

(1)判断注入类型     我们可以看到无法输入数字,所以我们进行抓包在bp中进行SQL注入

我们输入id=1' and '1'='1看见报错了,输入id=1 and 1=1没有报错。

 所以注入类型为数字类型

(2)判断列数

我们知道列数为2列

(3)判断回显位置

我们可以知道回显位置是2

(4)判断数据库

(5)判断表名

(6)判断列名

我们输入users之后,发现没有如何反应

通过源代码我们可以知道,发现它对单引号进行了转义,我们采用16进制绕过,得知users的十六进制为 0x75736572

(7)获取数据

3.high级别

(1)判断注入类型

我们可以知道是字符型注入

(2)判断列数

列数为2列,我们可以发现high级别和low级别的步骤是一样的,所以我在这里就不写了,可以参考low级别的步骤就行了

六.SQL Injection (Blind)

我们在讲SQL Injection (Blind)之前,先讲一下什么是sqlmap注入。

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。

Sqlmap采用了以下5种独特的SQL注入技术

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
  • 联合查询注入,在可以使用Union的情况下注入
  • 堆查询注入,可以同时执行多条语句时的注入

Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。

sqlmap是一个跨平台的工具,很好用,是SQL注入方面一个强大的工具!

我们可以使用 -h 参数查看sqlmap的参数以及用法,sqlmap  -h

sqlmap的使用方法:sqlmap -u  url 是对网站进行注入

sqlmap -r  是对文件进行注入

这里我们对SQL Injection的low级别进行sqlmap,具体过程我写在了图片上面

1.low级别

(1)我们先进行抓包

(2)然后使用sqlmap

(3)爆破数据库              --dbs

(3)爆破表名                             -D 'dvwa' --tables

(4)爆破字段名    -D 'dvwa'  -T ' guestbook' --columns

(5)爆破数据

后面的我们都可以使用sqlmap进行注入,所以后面的就在这里不讲解了。

DVWA之SQL注入相关推荐

  1. DVWA通关-SQL注入篇

    DVWA通关-SQL注入篇 开篇之前   我知道网上也有很多通关攻略,但都是别人通关,复制粘贴也是别人的,所以就想写一下自己的.写下这篇文章主要是记录自己的学习,以及和各位朋友交流,有错误的地方,希望 ...

  2. DVWA通关--SQL注入(SQL Injection)

    目录 LOW 通关步骤 一.手工注入 二.sqlmap注入 代码分析 MEDIUM 通关步骤 方法一.手工注入 方法二.sqlmap注入 代码分析 HIGH 通关步骤 方法一.手工注入 方法二.sql ...

  3. 使用Sqlmap对dvwa进行sql注入测试(初级阶段)

    0.测试准备 1)打开Kali虚拟机终端; 2)打开靶机OWASP,并通过浏览器,输入IP地址进入dvwa的主页,然后选择SQL injection进入SQL注入的测试页面 1.获取DVWA的url和 ...

  4. 网络安全-靶机dvwa之sql注入Low到High详解(含代码分析)

    目录 SQL Injection-LOW Union注入 注入点判断 字段判断 获取数据库名 获取表名 获取列名 获取数据 Error注入 获取表名 获取列名 获取数据 源码解析 主要步骤 漏洞原因 ...

  5. 【dvwa】--SQL注入

    为了准备跑路,练习ing. SQL注入篇 LOW级别 先上源码 <?php if( isset( $_REQUEST[ 'Submit' ] ) ) {// Get input$id = $_R ...

  6. 使用SQLmap对dvwa进行SQL注入测试

    SQLmap工具github链接:https://github.com/sqlmapproject/sqlmap 搭建dvwa环境并启动. windows上需要搭建Python环境,下载sqlmap包 ...

  7. DVWA平台漏洞测试与源码分析(一)SQL注入

    DVWA平台是初学网络安全者了解十大漏洞的有效途径,此平台收集了当前威胁网络安全的最常见的十大漏洞,并且为各位初学者提供了靶场实验环境,我们可以利用此平台进行各种攻击实验,从而丰富自己对于Web安全的 ...

  8. sql注入之order by猜列数问题

    环境: xampp-win32-5.6.3-0-VC11 dvwa-1.0.8 前言 有幸在网上搜到一款非常不错的渗透测试演练系统 - dvwa ,作为学习,演练真的非常强大啊! 在学习的过程中也遇到 ...

  9. 防御sql注入之参数化查询

    概念:在sql语句中需要输入值的地方以参数进行给值 特点:和以往用变量传递拼接出完整的sql语句后再直接执行该语句(拼接后的语句整体会一同参与数据库sql语句的编译过程)不同的是:值的给定会在数据库编 ...

最新文章

  1. android 字体像素转换工具类_Android中px与dip,sp与dip等的转换工具类
  2. 关于《红泰昌 TC-2015B》严重漏电说明!
  3. Gateway网关-过滤器链执行顺序
  4. mysql设置token有效期_记住我 token保存到数据库
  5. windows脚本编制引擎_说说 Windows 脚本宿主运行的几种方式
  6. 2021年商业的几点变化
  7. 大数取余运算(详解)
  8. 坑爹!Quartz 重复调度问题,你遇到过么?
  9. mysql密码怎么解密_MySQL密码加密与解密详解
  10. 详解python使用browsermobproxy获取当前网页xhr的get数据方法
  11. netkeeper代理服务器未响应,使用netkeeper创翼网速慢解决方案(C13)
  12. MATLAB仪表表盘数字识别解析
  13. 电脑连上WIfi但无网络的问题解决办法
  14. openGauss 准备软硬件安装环境
  15. 平仓_敞口_外汇结售汇_小记
  16. 美团面试题:DCL单例模式需不需要volatile?
  17. 外呼系统《MRCP协议进行智能外呼》
  18. 中国动画腾飞的关键所在 (转)
  19. 浅析机器学习、深度学习、神经网络三者的关系及内在联系
  20. Excel中按方向键,没有跳动单元格

热门文章

  1. ios 计算label宽度(高度)出错在iPhone5s、iphone6上出错
  2. 大学生必读好书,少读一本都遗憾!
  3. 已知二叉树前序中序,求后序代码实现
  4. linux1251端口,#1251 - Client does not support authentication问题解决!
  5. 荤笑话与软件需求分析 荤笑话与软件需求分析
  6. MRO super
  7. java 队列和栈的区别
  8. matlab怎么画威布尔分布,matlab绘制威布尔分布曲线.docx
  9. 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,目每种票子至少一张。问:有几种换法?使用JavaScript进行换算。
  10. XCC CEO张艺凡:借助区块链解决医疗健康领域数据痛点