Day73:WEB攻防-支付逻辑篇篡改属性值并发签约越权盗用算法溢出替换对冲

本文主要是介绍Day73:WEB攻防-支付逻辑篇篡改属性值并发签约越权盗用算法溢出替换对冲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

SRC-支付逻辑测试

购买支付-修改数量&篡改价格&订单对冲

修改数量

篡改价格

产品替换对冲

订单替换对冲

购买支付-优惠券复用盗用&积分对冲溢出

优惠卷复用

优惠卷盗用

积分对冲溢出

SRC实战案例分享

越权让他人支付

四舍五入半价购

并发提前全签到

循环利用优惠卷

支付签约多逻辑


知识点:

1、支付逻辑-商品本身-修改-数量&价格&属性等

2、支付逻辑-营销折扣-优惠券&积分&签约&试用等

3、支付逻辑-订单接口-替换&并发&状态值&越权支付等

SRC-支付逻辑测试

支付逻辑常见测试:

  1. 熟悉常见支付流程:选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
  2. 熟悉那些数据篡改:商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态等
  3. 熟悉那些修改方式:替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
  4. 熟悉那些另类方法:无限试用,越权支付,并发兑换,四舍五入半价购,循环利用优惠券,支付签约逻辑等

支付逻辑挖掘:

  1. 找到关键的数据包:可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
  2. 分析数据包:支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠等)
  3. 要尝试对数据包中的各个参数进行分析。
  4. 不按套路出牌:多去想想开发者没有想到的地方,如算法拼接,关闭开启返优惠券等
  5. PC端尝试过,APP端也看看,小程序也试试

支付逻辑安全修复:

  1. 在后端检查订单的每一个值,包括支付状态;
  2. 校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
  3. 与第三方支付平台检查,实际支付的金额是否与订单金额一致;
  4. 如给用户退款,要使用原路、原订单退回。如:退押金,按用户原支付订单原路退回;
  5. 加密、解密、数字签名及验证,这个可以有效避免数据修改,重放攻击中的各种问题;
  6. 金额超过指定值,进行人工审核等。

购买支付-修改数量&篡改价格&订单对冲

 

修改数量

篡改价格

产品替换对冲

订单替换对冲

购买支付-优惠券复用盗用&积分对冲溢出

正常每个账户只能领取一次

优惠卷复用

分别使用优惠卷购买商品及不使用优惠卷购买商品并抓取两个不同请求订单数据包

此时第三次购买商品,并修改数据包把use_coupon=0改为use_coupon=4

优惠卷盗用

此时第四次购买商品,并修改数据包把use_coupon=0改为use_coupon=6

积分对冲溢出

如果在兑换余额上把兑换积分数改为-1会怎么样

SRC实战案例分享

越权让他人支付

参考文章:https://forum.butian.net/share/1125
 

四舍五入半价购

这个漏洞上次看小伙伴交的补天,获得了厂商1.2k的奖金,如何操作呢,我们来分析分析。我们以充值为例,余额值一般保存到分为止,那么如果我充值0.001元也就是1厘,一般开发会在前端判断我们的数字,或者将最后一位四舍五入,使用支付宝或者微信充值是直接报错的,因为第三方一般只支持到分(0.01)。

那我们如果充值0.019呢,由于支付宝或微信只判断到分,所以导致只能支付0.01,而由于我们支付成功,前端会将9四舍五入,直接变成0.02,所以等于直接半价充值。(这个漏洞京东也是有的,不过后来修复了。)

并发提前全签到

1、采用时间验证,修改当前设备时间绕过
2、未采用验证,直接修改数据包对应发包

循环利用优惠卷

支付签约多逻辑

大家都知道有些软件推出了新用户的会员签约功能,新的用户首次签约付费时能以低价购买会员,这个时候就尝试想白嫖多个月的低价会员了。于是开始第一次测试——使用支付宝打开签约界面,然后使用微信也同时打签约界面,然后再依次支付,支付后系统提示,无法重复签约。

我想难到系统有检测?舍不得孩子套不到狼,于是申请个新号再次进行测试:

  1. 还是同时支付宝和微信都打开了签约界面,但这次先签约其中一个比如先签约微信;
  2. 微信支付成功并签约完成后,在微信取消签约,然后再去支付宝点击签约;

这个时候奇迹就发生了,系统成功到账了2个月的低价会员!

也就是说服务器虽然校验了同一新用户不能同时多次低价签约,但是对于新用户同时发起的多个支付签约页面的请求,服务器没有校验解约后再次签约的情况,导致成功白嫖!以上的一个业务逻辑流程大致如下图:

这篇关于Day73:WEB攻防-支付逻辑篇篡改属性值并发签约越权盗用算法溢出替换对冲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/830757

相关文章

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

Spring Cache注解@Cacheable的九个属性详解

《SpringCache注解@Cacheable的九个属性详解》在@Cacheable注解的使用中,共有9个属性供我们来使用,这9个属性分别是:value、cacheNames、key、key... 目录1.value/cacheNames 属性2.key属性3.keyGeneratjavascriptor

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

Spring Boot 事务详解(事务传播行为、事务属性)

《SpringBoot事务详解(事务传播行为、事务属性)》SpringBoot提供了强大的事务管理功能,通过@Transactional注解可以方便地配置事务的传播行为和属性,本文将详细介绍Spr... 目录Spring Boot 事务详解引言声明式事务管理示例编程式事务管理示例事务传播行为1. REQUI