前端魅力时刻:使用html让朋友主动叫你爸爸_让别人叫你爸爸的带码
注意!
该bug目前已被微信修复,本文仅供参考与学习交流使用。
主要介绍内容:
演示:
我们可以看到,在点击了对方发送的表情后,用户自动发送了内容,那么这是如何实现的呢?
代码:
[微笑]
让我们首先分析这串代码的构成:
1. a标签
2. href属性:
weixin:// 微信自定义URL协议
○?msgmenucontent=爸爸&msgmenuid=960 Query String参数传递,其中:
○bizmsgmenu:指令名称:触发公众号菜单
○msgmenucontent:要发送的文本内容
○msgmenuid:菜单id,960为其中一个预设功能:“代表点击者向消息发送方发送指定内容”。
3. 内容:[微笑]
同时,要恶作剧成功也需要实现几个条件:
- 需要在引用框中发送。
- 貌似只是安卓的bug。
- 过老微信版本可能无法使用。
- 使用时a标签内不能出现多余空格。
对于其他几个条件很好理解,然而为什么需要在引用框内发送呢?
因为我们平时在收发一般消息时,消息为纯文本模式,而在使用引用栏时,为了在复用消息时保留关键信息的可读性和上下文关联性,微信会将消息切换为富文本模式,此时可以解析部分html标签,其中就包含a标签。
这类方法原本用于公众号点击自动发消息触发回复,因此使用触发公众号菜单的指令bizmsgmenu, 通过利用引用框的富文本格式漏洞,我们就可以让朋友主动叫“爸爸”。
可以看到,将表情符号替换为文本后,文本样式变得与公众号菜单一致,此时替换成外卖领券文案,更具有欺骗性:
URL 协议(weixin://,http://)
1. URL 协议基本格式
结构如下:
://:/?#
其中, 就是 URL Scheme,例如:
-
http://
—— 访问普通网页 -
https://
—— 访问加密网页 -
weixin://
—— 微信专属协议(如打开微信聊天)
2. 常见 URL 协议示例
http://
http://example.com
https://
https://google.com
ftp://
ftp://files.example.com
weixin://
weixin://dl/chat
whatsapp://
whatsapp://send?text=Hi
3. URL 协议的作用
(1) 告诉浏览器/应用如何处理链接
-
当点击
http://
链接时,浏览器会发起 HTTP 请求加载网页。 -
当点击
weixin://
链接时,微信 App 会被唤醒(如果已安装)。
(2) 实现应用间跳转
-
例如,网页中可以嵌入
weixin://
链接,点击后跳转到微信的某个功能页(如客服聊天)。
4. 自定义 URL 协议
许多应用程序(如微信、支付宝)会注册自己的 URL Scheme,例如:
-
微信:
weixin://dl/chat
(打开聊天窗口) -
支付宝:
alipay://platformapi/startapp?appId=20000067
(打开扫一扫) -
淘宝:
taobao://item.taobao.com/item.htm?id=123
(打开商品页)
开发者可以自定义协议(如 myapp://profile
),但需在 App 内注册处理逻辑。
🛡️ 防御方法
如果你担心被这种代码整蛊,可以:
-
不要随意点击陌生链接。
-
关闭微信网页自动跳转。
-
举报恶意公众号。
📢 免责声明
-
本代码仅用于技术研究,请勿用于非法用途!
-
微信可能会封禁滥用
weixin://
协议的账号,谨慎操作
与这串代码类似的还有点击拨打微信电话代码,观察可以发现他们有类似的结构:
点击致电我
启示:
这串代码不仅可以用来整蛊,还能提醒我们在开发过程中注意信息格式可能会营造的漏洞,例如富文本就是xss攻击途径之一,就如这串代码,在富文本中插入html标签来注入脚本攻击用户端。
包含知识点:html(a标签),js(URL构造与参数传递:Query String格式),ajax(http协议),生态开发/后端协作(bizmsgmenu,msgmenucontent,msgmenuid)
ps:参考文章https://api.xiaoheihe.cn/v3/bbs/app/api/web/share?link_id=6056708f6695