首页
社区
课程
招聘
[原创]企业微信转发卡bug的漏洞分析
发表于: 2024-6-8 20:34 8894

[原创]企业微信转发卡bug的漏洞分析

2024-6-8 20:34
8894

企业微信转发的上限正常是9个
图片描述

但通过手动卡bug可以突破9个
图片描述

同样的办法在个人微信上就不行
好奇背后的原因,分析了一下

个人微信和企业微信的界面都是Duilib
Duilib是基于消息做响应
鼠标的消息:

Duilib的响应:

四个鼠标消息中
原生的Duilib没有响应WM_RBUTTONUP // 鼠标右键抬起
个人微信的Duilib也没有响应WM_RBUTTONUP
但企业微信的Duilib有响应WM_RBUTTONUP

这就埋下了一个bug
正常点击复选框,会发出事件:UIEVENT_BUTTONUP

特殊点击复选框,发不出事件:UIEVENT_BUTTONUP

复选框卡在按下未抬起的状态
左边已经选择,但右边没有选择
图片描述
再单击一下复选框,就卡出bug
左边没有选择,但右边已经选择
图片描述

新版本漏洞修补情况
上面说的方法已经失效
用另外一种特殊操作
选择还是可以超过9个
但发送提示不能超过9个
图片描述

#define WM_LBUTTONDOWN                  0x0201 // 鼠标左键按下
#define WM_LBUTTONUP                    0x0202 // 鼠标左键抬起
#define WM_RBUTTONDOWN                  0x0204 // 鼠标右键按下
#define WM_RBUTTONUP                    0x0205 // 鼠标右键抬起
#define WM_LBUTTONDOWN                  0x0201 // 鼠标左键按下
#define WM_LBUTTONUP                    0x0202 // 鼠标左键抬起
#define WM_RBUTTONDOWN                  0x0204 // 鼠标右键按下
#define WM_RBUTTONUP                    0x0205 // 鼠标右键抬起
case WM_LBUTTONDOWN:
    CControlUI* pControl = FindControl(pt);
    m_pEventClick = pControl;
    event.Type = UIEVENT_BUTTONDOWN;
 
case WM_LBUTTONUP:
    if( m_pEventClick == NULL ) break;
    event.Type = UIEVENT_BUTTONUP;
    m_pEventClick = NULL;
 
case WM_RBUTTONDOWN:
    m_pEventClick = pControl;
    event.Type = UIEVENT_RBUTTONDOWN;
case WM_LBUTTONDOWN:
    CControlUI* pControl = FindControl(pt);
    m_pEventClick = pControl;
    event.Type = UIEVENT_BUTTONDOWN;
 
case WM_LBUTTONUP:
    if( m_pEventClick == NULL ) break;
    event.Type = UIEVENT_BUTTONUP;
    m_pEventClick = NULL;
 
case WM_RBUTTONDOWN:
    m_pEventClick = pControl;
    event.Type = UIEVENT_RBUTTONDOWN;
// if (uMsg == WM_RBUTTONUP)
v115 = uMsg - 0x205;
if ( !v115 )
    m_pEventClick = NULL;
// if (uMsg == WM_RBUTTONUP)
v115 = uMsg - 0x205;
if ( !v115 )
    m_pEventClick = NULL;

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2024-7-31 10:46 被GhHei编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 761
活跃值: (656)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
思路不错。
2024-7-24 14:34
0
游客
登录 | 注册 方可回帖
返回
//