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的网站
alt
b. 点击进入对应的View details可以查看商品的信息
c. url拼接了/product?productId=6
ALT

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

a. 从总体的功能点来分析 : 加载首页→加载了很多图片→访问商品明细→展示信息
b. 因此,不难分析/product?productId=6就是我们的突破口
ALT

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

a. 发送一次数据包
ALT
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会变成

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

ALT
c. 尝试拼接注入 1' or 1=1 -- qwe
回显"Protocol error" 错误的请求,说明注入的方式不对

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

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

a. 点击了标签,发现参数变成了
filter?category=Clothing%2c+shoes+and+accessories

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

在这里插入图片描述

b. 尝试修改filter?category=发现内容回显在了HTML中
在这里插入图片描述

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成功显示了所有内容(包括隐藏的内容),完成了实验
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值