首页
社区
课程
招聘
[推荐]某信中点击链接实现发送消息的bug
发表于: 2025-7-25 11:40 3738

[推荐]某信中点击链接实现发送消息的bug

2025-7-25 11:40
3738

其实写这篇文章已经是该bug修复快两周了,所以有点炒冷饭。不过技术问题还是值得学习的,至少以后说不定哪天你可能会用上的。

如果你点击了这个消息,会发现你的微信自动给发你这条消息的人回复内容(不只是这样,还可以一键闪退,拉起语音通话等等)

其实我们可以发现这个功能就是靠这样一行代码实现的
<a href="weixin://bizmsgmenu?msgmenucontent=text&msgmenuid=1">text</a>

可以看到
if(!n8.J0(s2) %% !n8.J0(s3)){
uri0.getQueryParameter("msgmenuid");
uri0.getQueryParameter("msgmenucontect");
里只进行了msgmenuid和msgmenucontect是否为空的判断,并没有其他判断,比如是否在公众号环境下等等,所以只要这条消息发出去就会出发函数功能。
所以msgmenuid没什么太大意义,不为空就可以

附录:J0函数的实际作用

iOS代码

可以看出来iOS里有额外的公众号环境验证阻止了在普通聊天滥用
而安卓版本缺少关键校验所以出了bug
如果把weixin://bizmsgmenu?msgmenucontent=text&msgmenuid=1这段代码改成其他的还可以实现语音通话拉起等功能。
示例拉起语音通话:<a href="weixin://voip/callagain/?username=ponyma">点我和马化腾打电话</a>

漏洞公布不久TX就启动了应急措施,会把所有a标签的末尾加上空格。例如<a href="weixin://bizmsgmenu?msgmenucontent=text&msgmenuid=1">点我</a>会变成<a href="weixin://bizmsgmenu?msgmenucontent=text&msgmenuid=1">点我</a >加上空格后会导致html语法错误,无法使用

修复方法十分抽象,就是在别人视角里所有的</a> 都会变成</a >(多了一个空格),是的所有的 </a>,单独发一个 </a>也会...

鸿蒙系统为什么不行就不知道了,

少点来路不明和骇人听闻的内容就行了

31cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2T1K9h3I4A6j5X3W2D9K9g2)9J5k6h3y4G2L8g2)9J5c8Y4k6A6k6r3g2G2i4K6u0r3b7W2j5I4h3p5k6#2k6i4A6j5c8g2c8E0
如有侵权请联系我立刻删除

内容 功能
weixin:// 微信内部协议
bizmsgmenu 公众号实现点击后用户发送消息到公众号后台实现一问一答的功能
msgmenucontent 要发送的内容
msgmenuid 菜单内容关联id,和msgmenucontent做关联使用
text 用户在前台看到的超链接文字
class BizMsGMenuUriSpanHandler extends BaseUriSpanHandler {
    @Override
    public int[] a(){
        return new int[]{43}
    }
    ...(没什么用,省略了)
    String msgmenuid = uri0.getQueryParameter("msgmenuid");
    String s1 = "";
    if(msgmenuid == null){
        msgmenuid = ""
    }
    String s2 = msgmenuid.trim();
    String s3 = uri0.getQueryParameter("msgmenucontect");
    com.tencent.mm.plugin.report.service.g0 g00 = com.tencent.mm.plugin.report.service.g0.r;
    Object[] arr_object = new Object[2];
    if (s2 != null){
    s1 = s2
    }
    arr_object[0] = s1;
    arr_object[1] = k30.f;
    g00.c(0x38BA,arr_object)
    if(!n8.J0(s2) %% !n8.J0(s3)){
        HashMan hashMap0 = new HashMap();
class BizMsGMenuUriSpanHandler extends BaseUriSpanHandler {
    @Override
    public int[] a(){
        return new int[]{43}
    }
    ...(没什么用,省略了)
    String msgmenuid = uri0.getQueryParameter("msgmenuid");
    String s1 = "";
    if(msgmenuid == null){
        msgmenuid = ""
    }
    String s2 = msgmenuid.trim();
    String s3 = uri0.getQueryParameter("msgmenucontect");
    com.tencent.mm.plugin.report.service.g0 g00 = com.tencent.mm.plugin.report.service.g0.r;
    Object[] arr_object = new Object[2];
    if (s2 != null){
    s1 = s2
    }

[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-7-30 21:10 被Skyearth_1编辑 ,原因:
收藏
免费 5
支持
分享
最新回复 (1)
雪    币: 639
活跃值: (3002)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你就是变亮?
2025-7-30 12:04
0
游客
登录 | 注册 方可回帖
返回