DVWA SQL Injection (Blind) 通关解析

简介: DVWA SQL Injection (Blind) 通关解析

前言

DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序的开源应用程序。它被设计成一个易于安装和配置的应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序。


DVWA提供了一系列的场景和练习环境,用户可以通过这些场景来学习和实践利用技术。这些包括常见的安全问题,如SQL注入、跨站脚本(XSS)、文件包含等。通过这些,用户可以了解的原理、影响和防御方法。


DVWA提供了不同的安全级别,从低到高,以满足不同技能水平的用户需求。用户可以根据自己的能力选择适当的安全级别,并进行相应的练习和挑战。


DVWA还提供了一些额外的功能和工具,如Web代理、密码破解、弱密码检测等,以帮助用户更好地理解和处理问题。


总之,DVWA是一个用于学习和练习Web应用程序漏洞的开源应用程序。它提供了一系列的场景和练习环境,帮助安全专业人员和爱好者提高对Web应用程序安全的理解和实践能力。通过使用DVWA,用户可以加深对Web应用程序的认识,并学习如何有效地保护Web应用程序免受。

介绍

SQL 注入(SQL Injection)是一种通过将恶意 SQL 代码注入到应用程序的输入中,以操纵数据库执行攻击者指定的操作的方式。盲注(Blind SQL Injection)是 SQL 注入的一种特殊形式,无法直接获取数据库的错误消息或查询结果,只能通过观察应用程序的行为变化来推断数据库的响应。以下是对盲注的详细介绍,包括其原理、常见技术、手法、防御措施以及实例分析。

一、盲注的原理

在盲注中,无法直接看到数据库的查询结果,而是通过间接方法推断数据库的响应。通常有两种盲注方式:


  1. 基于布尔的盲注(Boolean-based Blind SQL Injection)
  • 通过发送不同的 SQL 查询,观察应用程序的响应是否变化,推断查询的布尔值。
  • 例如,通过发送 AND 1=1AND 1=2 查询,如果页面响应不同,可以判断应用程序是否易受攻击。
  1. 基于时间的盲注(Time-based Blind SQL Injection)
  • 通过发送包含延迟函数的 SQL 查询,观察响应时间的变化,推断查询结果。
  • 例如,通过发送 IF(condition, SLEEP(5), 0) 查询,如果响应时间增加,可以判断条件是否为真。

二、防御措施

  1. 使用预编译语句(Prepared Statements)
  • 预编译语句使用参数化查询,可以有效防止 SQL 注入。
  1. 输入验证和输出编码
  • 对用户输入进行严格验证和清理,防止恶意输入。
  • 在输出到 HTML、JavaScript 等环境时,进行正确的编码。
  1. 最小特权原则
  • 数据库用户权限设置为最低,防止通过 SQL 注入获得更高权限。
  1. 数据库防护机制
  • 使用 Web 应用防火墙(WAF)和数据库防火墙,检测和阻止恶意请求。
  1. 定期安全审计和测试
  • 定期进行代码审计和测试,发现和修复潜在的 SQL 注入。

一、Low

打开,先输入正常数据

得到回显

接下来输入 6,显示不存在

此得到两种回显,接下来就是加引号判断,先输入 1'

再换双引号正常,说明闭合是单引号

上工具爆破数据库

sqlmap -u "http://192.168.134.148:8081/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie "security=low; PHPSESSID=bl6rh2nnmkkk753hs7vd87gjam" --technique B --dbs

二、Medium

这一关做了限制

抓包可以看到是 POST 提交

右键发送到重放器

在重放器中更改参数为 6 显示不存在

接下来测试单引号和双引号

结果都是报错,索性不加引号直接跟上 and 1=1 判断

回显正常,说明咱找到了注入点

三、High

点击链接弹出程序

输入 1 后,两个都有正常回显

输入 6 则报错

开启拦截然后发送到重放模块

发生是框框里面的,因为它没有回显所以对咱来说没用

又有一个 GET 请求

再重放模块中测试得出 GET 请求是网页的,所以咱拿它测试是一样的

加单引号报错

双引号则没报错,所以应该是单引号闭合

这关使用sqlmap主要注意要比low关增加一个参数--level 2,这样才会检测cookie中是否包含注入点(默认--level 1,不检测cookie)

四、结论

盲注是 SQL 注入的一种复杂形式,无法直接获取查询结果,而是通过观察应用程序的行为变化推断数据库的响应。为了防御盲注,开发者应采取一系列安全措施,包括使用预编译语句、输入验证和输出编码、最小特权原则、数据库防护机制以及定期安全审计和测试。通过这些措施,可以有效防止 SQL 注入,保护应用程序和用户数据的安全。

相关文章
|
10月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
3234 11
|
12月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
229 4
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
246 1
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
214 0
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
1661 0
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
812 29
|
8月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
317 4
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多
  • DNS