【逻辑漏洞技巧拓展】————4、逻辑漏洞之支付漏洞

本文分析了顺丰宝、乐视商城、读览天下等平台的支付逻辑漏洞,揭示了数据签名缺失、参数明文放置等问题,可能导致经济损失。并提出了修复方案,包括数据签名、参数校验和服务端金额确认。

支付漏洞

乌云案例之顺丰宝业务逻辑漏洞

案例说明

顺丰宝存在支付逻辑漏洞,可以允许用户1元变1亿元。这个漏洞在其他网站很难存在,原因是页面交互都使用了对字段做签名。但是顺丰宝没做签名,导致支付金额可以被修改为任意数值。猜测成因是开发人员为了快速实现功能,而忽略了其中数据签名的步骤。可以想象,如果我充值1个亿,然后再使用取款功能,会产生神马效果。

利用过程

1 登录顺风宝查看余额

2 充值,选择招商银行。填写充值金额1,如下图:

提交之后如下:

3 开启firefox的tamper,点击支付,截取数据包,修改参数Amount为一分

4 提交跳转到招行支付

5 支付成功后,招行扣去一分

6 查询余额

 

乌云案例之乐视商城逻辑支付漏洞

案例说明

订单的价格在支付链接中出现,导致用户可以修改任意金额购买产品

利用过程

1 下单后选择支付,如图:

 

 

2 注意下面的连接,orderPrice参数为商品总额

 

3 将价格改成0.1

 

乌云案例之读览天下支付逻辑漏洞

案例说明

通过替换支付订单号的方式,来完成花小钱买大东西。同时生成两个订单号,一个贵的一个便宜,首先支付便宜的,银行往回返回的时候,替换订单号,然后就可以完成两个订单的同时支付。

漏洞成因

服务端只检查支付是否完成,并没有确认订单金额与银行支付金额是否相同,过分信任客户端提交的数据

修复方案

检查支付完成后价格和买的产品的价格是一样的。

乌云案例之天翼云盘通支付逻辑漏洞

案例说明

天翼云-云盘通设计缺陷,可提交负人民币的订单。

利用过程

1 选择套餐如图:

 

 

2 提交订单然后我们抓包,将购买年限改成负数

 

 

3 提交数据包后如图:

乌云案例之药房网订单提交逻辑漏洞

案例说明

药房网订单提交存在逻辑漏洞可对企业造成经济损失

利用过程

1 生成订单

 

 

2 使用Burp截断数据包,修改运费为一元

 

3 提交数据包

 

乌云案例之淘美网绕过支付

案例说明

淘美网重置处存在逻辑漏洞,可绕过支付直接充值成功

经过测试发现支付成功后流程走至如下链接:

http://www.3need.com/index.php?controller=site&action=payok&out_trade_no=充值订单号

只要提供对应的充值订单号 就可以绕过支付直接充值成功。

利用过程

1 新注册个账号进行测试

 

 

2 账号余额0

 

3 我们去充值,这个过程用burpsuite抓包,金额随意写

 

4 抓到支付订单号然后构造链接:

5 直接访问这个链接

6 接下来美女信息随意看了,不够再充

 

乌云大神的修复方案

1 和银行交易时,做数据签名,对用户金额和订单签名。

2 敏感参数不要明文放在URL中

3 服务端效验客户端提交的参数

4 在服务端计算金额的时候,一定要判断是否为正数。

5 支付过程中加一个服务器生成的key,用户校验参数有没有被串改。

6 如果一定需要用URL传递相关参数,建议进行后端的签名验证

7 订单金额和充值接口返回的数据进行校验

8 提交订单时后台判断单价是否与数据库中相符,如不符则返回错误。

9 支付时应从服务器拉取数据,而不是直接读客户端的值!!

 

<think> 嗯,用户现在明确表示想获取SQL注入漏洞的入门知识,还提供了三篇参考引用。看来ta是个刚入门网络安全的新手,需要基础但系统的知识框架。之前我回复过web漏洞挖掘的通用手段,这次要聚焦SQL注入这个具体方向。 用户引用的三篇文章都很有针对性:第一篇讲延时盲注技术,第二篇是漏洞思路总结,第三篇涉及检测防御。需要把这些内容整合成循序渐进的入门指南。特别要注意引用[1]提到的"延时盲注"属于高阶技术,对新手可能太难,应该放在进阶部分。 考虑到用户是零基础,要从最核心的概念讲起。先定义SQL注入是什么——本质是把用户输入拼接为SQL指令执行。必须强调危害性:数据泄露、篡改甚至服务器沦陷[^3]。接着分四个层次展开:基础原理、检测方法、漏洞利用演示、防御策略。 检测方法部分要突出实操性。引用[1]的延时盲注脚本虽然专业,但新手更适合先学布尔盲注这类基础手法。可以设计一个经典案例:用户登录框输入`admin' -- `绕过密码验证[^2]。防御措施要呼应引用[3]的参数化查询方案,这是最根本的解决方法。 最后生成的拓展问题很重要。用户明显有继续深造的意向,所以问题要覆盖漏洞挖掘(如时间盲注)、绕过技巧(WAF过滤)、防御深度等方向。特别是引用[2]提到的"知识体系",可以用树状图辅助说明。 特别注意数学公式的LaTeX规范。比如解释布尔盲注原理时,用$1=1$和$1=2$这类简单表达式就够了,避免使用积分等复杂符号。所有代码示例必须用反引号标注语言类型,像`?id=1' AND 1=1--`这样的payload要显眼。 </think> 以下是SQL注入漏洞的入门指南,结合引用内容分步骤详解: --- ### 一、SQL注入核心原理 **本质**:攻击者通过构造特殊输入,篡改原始SQL语句逻辑 **触发条件**: 1. 用户输入直接拼接进SQL语句(如 `"SELECT * FROM users WHERE id='" + input + "'"`) 2. 输入未经过滤或过滤不严谨 **危害示例**: - 绕过登录:输入 `admin' -- ` 使SQL变为 ```sql SELECT * FROM users WHERE username='admin' -- ' AND password='xxx' ``` 注释符 `--` 使密码验证失效[^2] - 数据泄露:通过 `UNION SELECT` 提取数据库敏感信息[^1] --- ### 二、基础检测方法(手动) #### 步骤1:识别注入点 ```http GET /product?id=1' HTTP/1.1 --> 观察是否返回数据库错误(如MySQL语法错误) ``` #### 步骤2:验证漏洞存在性 | 测试类型 | 输入样例 | 预期响应特征 | |----------------|----------------------|----------------------| | **布尔测试** | `id=1' AND 1=1 -- ` | 页面正常加载 | | | `id=1' AND 1=2 -- ` | 页面内容异常/为空 | | **联合查询** | `id=-1' UNION SELECT 1,2,3 -- ` | 页面显示数字2或3(字段回显位)[^2] | #### 步骤3:信息提取(示例) ```http GET /product?id=-1' UNION SELECT @@version, database(), user() -- ``` > 返回结果可能包含:MySQL版本、当前数据库名、数据库用户[^1] --- ### 三、自动化工具使用(sqlmap演示) **基本命令**: ```bash sqlmap -u "http://example.com/product?id=1" --batch ``` **进阶操作**: ```bash # 获取所有数据库名 sqlmap -u [URL] --dbs # 提取指定表数据 sqlmap -u [URL] -D db_name -T users --dump ``` > 工具原理:自动构造布尔表达式、时间延迟语句检测响应差异[^1] --- ### 四、防御措施(关键点) 1. **参数化查询(根本解决方案)** ```python # 错误方式(拼接字符串) cursor.execute("SELECT * FROM users WHERE email = '%s'" % email) # 正确方式(参数化) cursor.execute("SELECT * FROM users WHERE email = %s", (email,)) # [^3] ``` 2. **防御层补充** - 输入过滤:过滤 `'`、`"`、`--` 等特殊字符 - 最小权限原则:数据库账户禁用DROP/ALTER等高危权限 - WAF防护:部署ModSecurity等Web应用防火墙 --- ```mermaid graph TB A[用户输入] --> B{是否拼接SQL?} B -->|是| C[存在注入风险] B -->|否| D[相对安全] C --> E[参数化查询改造] C --> F[增加输入过滤] C --> G[降低数据库权限] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值