回显UNION注入前提-确定查询返回的列数

admin 2023年10月17日08:30:41评论15 views字数 1506阅读5分1秒阅读模式

前言

声明:这里是由零信任安全实验室组建的一个知识平台,平台有批量验证的脚本、工具以及一些漏洞的POC,后续还会分享网络安全资源(漏洞挖掘文章 工具 资讯以及SRC漏洞挖掘案例分享等等,资源多多,干货多多!
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者和本公众号无关。工具
来自网络,安全性自测。

作者:杳若

回显UNION注入前提-确定查询返回的列数


  1. Lab: SQL injection UNION attack, determining the number of columns returned by the query

实验前置必要知识点

通过突破WHERE子句,我们可以查询到当前数据表中所有内容,如何查询其他表中的内容?

在可以突破WHERE子句(有回显位)的情况下,我们可以利用UNION关键字,执行其他查询并将结果追加到原始查询。

UNION关键字的查询语句正常工作,必须满足两个关键要求:

  • 各个查询必须返回相同数量的列。
  • 每列中的数据类型必须在各个查询之间兼容。

执行 SQL 注入 UNION攻击时,要确定从原始查询返回的列数,不然数据库语句会报错

常用ORDER BY排序或者NULL(空值数)填充的方式。

实验要求


  1. 此实验室在产品类别筛选器中包含 SQL 注入漏洞。查询的结果在应用程序的响应中返回,因此您可以使用 UNION 攻击从其他表中检索数据。此类攻击的第一步是确定查询返回的列数。然后,您将在后续实验室中使用此技术来构建完整攻击。
  2. 若要解决实验室问题,请通过执行返回包含 null 值的附加行的 SQL 注入 UNION 攻击来确定查询返回的列数。

渗透开始

  • 访问对应靶场界面
    
    
  1. https://portswigger.net/web-security/sql-injection/union-attacks
  • 启动靶场
    1. 站点分析

    这是购物SHOP类型的网站

回显UNION注入前提-确定查询返回的列数
可以查看商品价格
回显UNION注入前提-确定查询返回的列数
可以使用标签
回显UNION注入前提-确定查询返回的列数
存在登录界面
回显UNION注入前提-确定查询返回的列数

2. 寻找可疑功能点(查看Burp历史记录进行分析)

从总体来看,根据提示我们优先查看具有筛选标签功能的内容

回显UNION注入前提-确定查询返回的列数

3. 功能点测试

将对应的日志信息发送到重放模块,比较直观的一点是该功能点具有回显位

回显UNION注入前提-确定查询返回的列数
且具有筛选功能,筛选关键词Accessories的内容显示在HTML中,推测后端代码


  1. SELECT * FROM products WHERE category = 'Accessories' AND released = 1

利用报错进行尝试,添加单引号后报错,推测大概率存在SQL注入

回显UNION注入前提-确定查询返回的列数

尝试注释注入的方法查看商品详情,发现回显正常


  1. GET /filter?category=Accessories' -- q HTTP/2

这说明执行了SQL语句中的注释功能,存在SQL注入

回显UNION注入前提-确定查询返回的列数

4.确定查询返回列数

方法一、尝试ORDER BY
利用该排序命令排序第一列回显正常(说明语法正确)


  1. GET /filter?category==Accessories' ORDER BY 1 -- q HTTP/2

回显UNION注入前提-确定查询返回的列数

利用Burp的枚举模块,很直观的发现,当排序到4的时候页面产生了错误


  1. GET /filter?category=Accessories' ORDER BY 3 -- q HTTP/2

回显UNION注入前提-确定查询返回的列数
共有3个字段
回显UNION注入前提-确定查询返回的列数
方法二、NULL
初步拼接字段,直到页面正常
可以发现拼接一个字段是错误的


  1. GET /filter?category=Accessories' UNION SELECT NULL -- q HTTP/2

回显UNION注入前提-确定查询返回的列数

我们依旧利用枚举模块进行尝试,3个字段的拼接是正确的

回显UNION注入前提-确定查询返回的列数

5.完成实验

使用确认的payload完成实验

回显UNION注入前提-确定查询返回的列数

原文始发于微信公众号(零信任攻防实验室):回显UNION注入前提-确定查询返回的列数

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月17日08:30:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   回显UNION注入前提-确定查询返回的列数http://cn-sec.com/archives/2118163.html

发表评论

匿名网友 填写信息