SRC挖掘
文集大纲加载中……
小迪安全知识库
-
+
首页
小程序让地址校验失效
小程序让地址校验失效
1 “舔狗的自述” 事情是这样的。 最近在挖某家新开的 SRC,小程序刚上线没多久,我寻思: **“新资产 + 新业务,一般都比较有节目效果。”** 于是打开小程序开始随缘乱逛。 **_一、第一眼:非常普通的购物小程序_** 整个小程序长这样:  说实话,第一眼看过去: 很普通。 普通到甚至有点困。 就是标准的: * 商品 * 下单 * 收货地址 * 支付 这种电商模板。 **_二、一开始其实没什么思路_** 我最开始测了一圈: * 登录 * 优惠券 * 商品接口 * 支付流程 都没太大收获。 直到我点到了: 👉 收货地址。  **_三、一个让我有点不服气的提示_** 我随手填了个比较偏远的地址。  结果系统提示: 当前地区暂不支持发货  正常用户看到这里,可能就退出了。 但挖洞人脑子里的第一反应是: **“真的假的?”** **_四、业务逻辑里,最怕“前端判断”_** 很多业务系统都会做这种: if(地区不支持) { 不允许下单 } 但问题在于: 有些系统只在前端判断。 后端根本没认真校验。 于是经典流程来了: **“开BP,抓包。”** **_五、开始看修改地址的数据包_** 我在“修改地址”的地方抓了个包。  数据结构其实挺典型: provinceCode cityCode countyCode townCode villageCode 也就是: * 省 * 市 * 区县 * 乡镇 * 村 对应的五级行政编码。 **_六、这个时候,开始进入“胡思乱想”阶段_** 说实话。 一开始我也没什么特别高级的思路。 只是脑子里有个问题: **“它到底是怎么判断这个地区能不能发货的?”** **_七、我现在很喜欢测一种东西:数据类型_** 很多系统: * 校验了值 * 但没校验类型 比如: 650000 它可能只判断: 是否等于 650000 但没考虑: 650000.0 **_八、于是我做了一个很朴素的测试_** 直接把: "provinceCode":"650000" 改成: "provinceCode":"650000.0"  然后重新发包。 **_九、结果突然就不一样了_** 原本: 不支持发货 现在: 直接通过了。  我当时第一反应其实是: **“啊?这也行?”** **_十、接下来继续验证_** 既然地址修改成功了。 那下一步自然就是: 下单测试。 结果: 订单成功创建。  **_十一、这个漏洞本质是什么?_** 简单来说: 地址校验逻辑存在缺陷。 系统原本应该: * 严格校验行政区编码 * 判断是否属于禁发区域 但实际上: 它只校验了“部分格式”。 **_十二、为什么 650000.0 能绕过去?_** 这个场景其实很典型。 有些后端会出现: 字符串 → 数字转换 或者: 弱类型比较 导致: 650000 == 650000.0 成立。 但: 业务判断流程已经被绕过了。 * 弱口令 * 简单爆破 但都没什么结果。 3 小总结 以前我总觉得: **“业务逻辑漏洞,应该很复杂。”** 后来发现很多时候其实不是。 反而很多问题都来自: * 类型校验 * 边界值 * 参数格式 我当时其实觉得: 这最多是个低危。 毕竟: * 没有 getshell * 没有拖库 * 没有特别夸张的利用链 结果交上去之后: 通过了,而且还是高危。  那一刻属于是: **“鼠鼠突然理解业务漏洞为什么值钱了。”** 如果总结一下,其实就几个点: 🔹 不要太相信前端提示 不支持发货 ≠ 后端真的禁止 🔹 参数不只测“值” 还要测: * 类型 * 格式 * 空值 * 小数 * 科学计数法 🔹 业务漏洞很多时候不复杂 它更像: **“你有没有多试一下。”**
xiaodi
2026年5月15日 21:41
233
0 条评论
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档
PDF文档(打印)