SQL注入之WHERE 子句中的 SQL 注入漏洞

admin 2023年10月13日23:14:24评论4 views字数 2231阅读7分26秒阅读模式

前言

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

      欢迎加入零信任攻防实验室的知识星球,星球免费!后续会抽奖送360定制周边礼品哈,敬请期待!平台有批量验证的脚本、工具以及一些漏洞的POC,和分享网络安全资源(漏洞挖掘文章 工具 资讯)  以及SRC漏洞挖掘的技巧分享等等,资源多多,干货多多!

SQL注入之WHERE 子句中的 SQL 注入漏洞

作者:杳若



🦄WHERE 子句中的 SQL 注入漏洞,允许检索隐藏数据

Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

● 实验室要求

此实验室在产品类别筛选器中包含 SQL 注入漏洞。当用户选择类别时,应用程序将执行如下所示的 SQL 查询:

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

若要解决实验室问题,请执行 SQL 注入攻击,使应用程序显示任何类别(已发布和未发布)中所有产品的详细信息。

● 必要知识点

一个没有安全概念的网站,会直接将用户的输入拼接到SQL语句中进行查询。

例如当用户单击“礼品”类别时,其浏览器会请求 URL:

https://insecure-website.com/products?category=Gifts

这会导致应用程序进行 SQL 查询,以从数据库中检索相关产品的详细信息:

SELECT * FROM products WHERE category = ‘Gifts’

因此在黑盒测试中可以利用注释的方法尝试SQL注入


● 黑盒测试

● 首先访问对应的靶场界面

https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data

● 启动靶场 

https://0a6c00d604cb757cc0978126005c00ca.web-security-academy.net/

1. 分析功能点

a. 查看网站发现类似于SHOP的网站

SQL注入之WHERE 子句中的 SQL 注入漏洞

b. 点击进入对应的View details可以查看商品的信息

c. url拼接了/product?productId=6

SQL注入之WHERE 子句中的 SQL 注入漏洞


2. 查看burp的历史日志记录-(寻找功能点)

a. 从总体的功能点来分析 : 加载首页→加载了很多图片→访问商品明细→展示信息

b. 因此,不难分析/product?productId=6就是我们的突破口

SQL注入之WHERE 子句中的 SQL 注入漏洞

3. 将对应的日志信息发送到重放模块-(测试开始)

a. 发送一次数据包

SQL注入之WHERE 子句中的 SQL 注入漏洞

b. 猜测存在注入点,尝试直接注入,将6直接修改成5+1,查看回显情况是否有变化

"Invalid product ID"说明SQL语句并不是直接结束的,例如

SELECT * FROM products WHERE category = 'Gifts'

很有可能是后面还拼加了内容,例如:

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

这时候我输入5+1会变成

SQL注入之WHERE 子句中的 SQL 注入漏洞

SELECT * FROM products WHERE category = '5+1' AND released = 1

c. 尝试拼接注入 1' or 1=1 -- qwe

回显"Protocol error" 错误的请求,说明注入的方式不对

d. 接着测试了其他位置,发现尝试失败


4. 寻找其他功能注入点-(找错点了TAT)

a. 点击了标签,发现参数变成了

filter?category=Clothing%2c+shoes+and+accessories

并不一定只有数字的地方才是注入点

SQL注入之WHERE 子句中的 SQL 注入漏洞

b. 尝试修改filter?category=发现内容回显在了HTML中

SQL注入之WHERE 子句中的 SQL 注入漏洞

c. 用户可控的传参+存在回显=大概率存在注入

根据提示的代码SELECT * FROM products WHERE category = 'Gifts' AND released = 1

以及我们回显的代码/filter?category=Clothing, shoes and accessories

得到SQL语句

SELECT * FROM products WHERE category = 'Clothing, shoes and accessories' AND released = 1

d. 实验要求是显示隐藏的内容,因此我们让搜索的内容为全部

通过注释的方法,让 SQL 返回的结果为真,研究语法是单引号闭合构造Poyload如下:

/filter?category=adfad' or 1=1 -- qwe

SELECT * FROM products WHERE category = 'adfad' or 1=1 -- qwe' AND released = 1

从SQL语句结果的高亮可以发现 – 以及后面的内容都被注释掉了

服务器就会认为搜索结果为adfad,但是数据库里没有adfad结果为假,但是用或者连接,后面一句 1=1 必定为真,因此会显示所有category内的内容

5. 拼接/filter?category=adfad' or 1=1 -- qwe成功显示了所有内容(包括隐藏的内容),完成了实验

SQL注入之WHERE 子句中的 SQL 注入漏洞


SQL注入之WHERE 子句中的 SQL 注入漏洞


原文始发于微信公众号(零信任攻防实验室):SQL注入之WHERE 子句中的 SQL 注入漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月13日23:14:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入之WHERE 子句中的 SQL 注入漏洞http://cn-sec.com/archives/2110081.html

发表评论

匿名网友 填写信息