【juice-shop】★★★ Database Schema:通过 SQL 注入获取数据库结构
0x01 任务简报
通过 SQL 注入获取整个数据库结构。
0x02 实战:复现漏洞
🔍 第一步:发现 SQL 注入点
这个实际上没有一点思路,一开始我认为可能是搜索框那里有注入点,但是回显正常……
看了一下攻略,原来在进行搜索的时候,调用了一个请/rest/products/search?q=,这里有SQL回显……
个人认为,SQL注入,只要有回显(或者盲注反应),那就不是很麻烦

💉 第二步:测试注释和闭合
尝试基础的 SQL 注入语法,闭合原有查询并注释后续语句:
|
|


📊 第三步:确定列数
使用 ORDER BY 逐步增加列数,找出查询的确切列数:
|
|


确认查询包含 9 列。
🎯 第四步:UNION SELECT 回显位置
构造 UNION SELECT 语句,确定各列在响应中的回显位置:
|
|


🗄️ 第五步:识别数据库类型并查询结构
根据回显,确认使用的是 SQLite 数据库。SQLite 将所有表定义存储在 sqlite_master 系统表中。
构造查询语句,从 sqlite_master 表中提取所有 SQL 定义:
|
|


✅ 第六步:完成挑战
成功获取整个数据库的 schema 定义,挑战完成。
🔧 修复建议
找到它
第 5 行,关于 SQL 注入的直接找是不是 SQL 拼接了语句,审计一下就行
修复它
Fix1
Fix2和Fix3修了个寂寞……