有一些二维码活码限制了一个微信只能扫固定某一个二维码,猜测微信访问网页的时候生成一个 openid,这个 openid 跟二维码图片绑定。下次再扫描还是拿到同一张二维码。设想如果通过 hook 方式来伪造 openid 的话,是否可以突破这种限制呢?

1 ThisQ Sep 30, 2020 我觉得没戏,openid 是服务器针对不同的公众号来生成不同的 id 的,如果给改掉之后应该就找不到对应的关系了。 |
2 noe132 Sep 30, 2020 via Android 理论上同一个用户,不同应用获取到对该用户的 openid 不保证一致 |
3 wxsm Sep 30, 2020 一个 openid 是对应一个用户的,wx 通过它能知道你是谁,伪造的 openid 要怎么跟用户对应上呢? |
4 QUIOA Sep 30, 2020 via Android 是不是想搞刷赞刷票呀 |
5 Rekkles Sep 30, 2020 |
6 reus Sep 30, 2020 用汗毛想都知道不可以 |
8 kop1989 Sep 30, 2020 可以伪造,只要绕过二次跳转获取 code 》拿到 openID 的逻辑即可。 但按照你的描述,“某 openID 只能扫固定的某个二维码”。说明其系统中有 openid 与二维码链接的对应关系验证。也就是说你瞎填一个是不行的。必须得是符合其其他二维码对应关系的 openID 才行。 然后基本上就无解了。因为无感获取其他人的 openID 需要其在其的微信浏览器中获取一次性 code,附加 appid 与 appsecret 才能获取到。第三方技术服务的 appsecret 你是 100%拿不到的。 完结。 |
9 zhiyzellda Sep 30, 2020 via Android 查了一下什么是 hook,我想说,这个关键要看是微信本地判断或是服务器端判断,服务器判断的话,你没有人家服务器的 root 密码,怎么 hook ? 他可能直接把 openid 传给服务器进行登记。根本不存本地。 |
10 litaomn OP @kop1989 网页通过 snsapi_base 获取 openid,第三方应该不知道这个 openid 是不是合法的,获取到 openid 后,将 openid 随意改造一下,是否就可以突破呢 |
11 kop1989 Sep 30, 2020 @litaomn #10 确实可以改造 /替换,就诸如我说的。 但是第一,openID 不连续,第二,根据你的业务描述,openID 与二维码有关联关系。 所以除非暴力穷举所有 openID,否则做不到你说的“拿到所有二维码”这种结果。 |
13 yushiro Sep 30, 2020 via iPhone 请看微信的文档,只要按照文档来,你是不可能拿到 openid 的,与 web 端无关。 |
14 lucifelx Sep 30, 2020 via Android openid 泄露与被伪造都没有任何影响,因为后端是向微信服务索要的 openid,只要客户端换取 accesstoken 的过程能保证安全,那么后端取到的 openid 必然是正确的。(大概这个意思,有段时间不做 wx 开发了) |
15 litaomn OP 感谢各位大佬解答,死了这条心了 |
16 d5 Sep 30, 2020 openid 无法伪造,但是有些场景分析包,可以提供仿冒的 openid |
17 KingPL Sep 30, 2020 正常 只是 code 传到后台,后台校验拿到 openid 再返回一个 sessionId 到前端完成绑定,openid 不会放到前端... |
18 keepeye Sep 30, 2020 不行 |
19 masker Sep 30, 2020 via Android 哇!那微信钱包的钱不也可以自己加 0 了? |
20 linuxvalue Sep 30, 2020 想多了 |
21 killergun Sep 30, 2020 这要是能伪造,微信程序员可以下岗了 |
22 quan01994 Sep 30, 2020 不能伪造,但是你可以获取啊,你可以网上买一波微信号,用于获取 openId 。 |
23 levon Sep 30, 2020 via iPhone 能不能伪造跟你写的程序有关 |
24 annielong Sep 30, 2020 看程序了,获取 openid 这个是没法伪造的,但是第三方程序不一定会验证这个是否合法, |
25 newmlp Sep 30, 2020 去看看微信开发文档就知道了 |
27 EminemW Sep 30, 2020 openid 是微信提供一个 token 给后端,后端在通过这个 token 与 appid 向微信服务器请求拿到 openid 。所以你破解方向不应该是 openid, |
28 kop1989 Sep 30, 2020 @yepinf #26 不需要获取 code,因为 lz 的最终目的是编造非本机主的 openID 。说白了就是绕过 openID 获取机制而已。和 hack 微信的 openID 获取机制其实无关。 |
29 ebony0319 Sep 30, 2020 via Android 理论上不行,但是我见过黑产突然一下子(一两秒)一个地址多出十多万微信刷票,不知道怎么弄的。 |
30 zhiyzellda Oct 1, 2020 via Android @ebony0319 他自己就是部工吧,鬼搞得。或者是部人在黑市出售了工具。黑市用了 Tor,所以厂高也不知道是。 |
31 xuanbg Oct 1, 2020 虽然一个用户有多个 openId,但这些 id 是和公共号一一对应的。你伪造的上哪里去对应?对不上就拿不到用户身份,就没法通过验证。 |
33 eudore Oct 1, 2020 可以伪造 openid,前提是你可以破解 hmac 的非对称加密。 |
34 ESeanZ Oct 9, 2020 自己写一个微信服务不就好了吗?切图仔一个 想着自己手动写一个获取 openid 的服务(open_weixin_qq_com/connect/oauth2) 路由器吧域名解析到自己服务器上应该就可以了吧? |