充电桩无法线上支付
经王某人叙述,这个充电桩只能投币使用
扫一下
PS:还有来历不明的二维码不要乱扫。
假如我作为一名攻击者我完全可以做一个一模一样的充电桩网页,来钓鱼Wechat用户的敏感信息,或者直接转钱。所以在扫码之前最好是用解码器解码一下,并且检查原始二维码是否被覆盖
直接抓包
响应了一个钱包目录
直接改成99999999
现在可以
进去咯
发现无法支付…
发现一个信息泄露接口
换一个设备看看…
响应:
emmm,这也许是一个选套餐的
进入支付页面:
响应包:
订单号生成了
换成之前那个无法支付的机子试试…
首先获取套餐id
响应包:
下个单
响应包:下成功了
emmm…也许某个数据缺失?导致313机子无法支付?抓两个设备支付数据包进行对比…
在支付响应包中发现缺少了paytypes参数…
经过重新实验,发现的确如此
mitmproxy构造EXP
让手机代理连接到我们电脑,这样自动实现绕过…
CA证书搞一下,改https数据
import json
from mitmproxy import http
paytypes_json = '''
[
{
"type": "online",
"icon": "",
"name": "微信支付",
"desc": ""
},
{
"type": "union",
"icon": "",
"name": "云闪付",
"desc": ""
}
]
'''
def response(flow: http.HTTPFlow) -> None:
if "application/json" in flow.response.headers.get("content-type", ""):
try:
response_data = flow.response.get_text()
content = response_data.replace('"balance":"0.00"', '"balance":"已破解"').replace('"coin":"0.00"', '"coin":"已破解"')
content = content.replace('"paytypes":[]', f'"paytypes": {paytypes_json}')
flow.response.set_text(content)
except json.JSONDecodeError:
pass
详细获取CA证书参考官方文档
手机安装一下CA证书
选wifi
导入
wifi设置电脑端代理
打开小程序直接就可下单咯
总结
–这里0元支付是不存在的,这个开发者有一点苟,支付的时候是以商品日期加时间戳作为id的,而且这个订单费用是在服务端一一对应的,也就是最后交易只看订单号所对于的套餐价格
–到这里你可能会说要是商品高价买低价对调订单号会怎样?答案是不起作用。如果A充电桩买了10元套餐生成订单编号A1,B充电桩买了20元套餐生成订单编号B2.支付的时候若B2替换成A1,那么支付的将是A充电桩的A1订单。其实这里就可以进行劫持操作了,替换一下订单,受害者根本不知道支付的是哪一台充电桩