🦄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的网站
b. 点击进入对应的View details
可以查看商品的信息
c. url拼接了/product?productId=6
2. 查看burp的历史日志记录-(寻找功能点)
a. 从总体的功能点来分析 : 加载首页→加载了很多图片→访问商品明细→展示信息
b. 因此,不难分析/product?productId=6
就是我们的突破口
3. 将对应的日志信息发送到重放模块-(测试开始)
a. 发送一次数据包
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
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
文章来源:https://www.toymoban.com/news/detail-621505.html
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
成功显示了所有内容(包括隐藏的内容),完成了实验
文章来源地址https://www.toymoban.com/news/detail-621505.html
到了这里,关于SQL注入之WHERE 子句中的 SQL 注入漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!