【二进制漏洞-企业微信转发卡bug的漏洞分析】此文章归类为:二进制漏洞。
企业微信转发的上限正常是9个
![图片描述](http://resources.yxfzedu.com/images/article_images/1000535_7FHFH2RA5346VKA.webp)
但通过手动卡bug可以突破9个
![图片描述](http://resources.yxfzedu.com/images/article_images/1000535_E9FPWS5PZ57KJDV.webp)
同样的办法在个人微信上就不行
好奇背后的原因,分析了一下
个人微信和企业微信的界面都是Duilib
Duilib是基于消息做响应
鼠标的消息:
Duilib的响应:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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;
|
四个鼠标消息中
原生的Duilib没有响应WM_RBUTTONUP // 鼠标右键抬起
个人微信的Duilib也没有响应WM_RBUTTONUP
但企业微信的Duilib有响应WM_RBUTTONUP
1 2 3 4 | / / if (uMsg = = WM_RBUTTONUP)
v115 = uMsg - 0x205 ;
if ( !v115 )
m_pEventClick = NULL;
|
这就埋下了一个bug
正常点击复选框,会发出事件:UIEVENT_BUTTONUP
1 2 3 4 5 6 7 8 9 10 | 1 、鼠标左键按下
case WM_LBUTTONDOWN:
CControlUI * pControl = FindControl(pt);
m_pEventClick = pControl; / / m_pEventClick赋值
2 、鼠标左键抬起
case WM_LBUTTONUP:
if ( m_pEventClick = = NULL ) break ; / / m_pEventClick有值,不跳过
event. Type = UIEVENT_BUTTONUP; / / 发出事件:UIEVENT_BUTTONUP
m_pEventClick = NULL; / / m_pEventClick置空
|
特殊点击复选框,发不出事件:UIEVENT_BUTTONUP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1 、鼠标左键按下
case WM_LBUTTONDOWN:
CControlUI * pControl = FindControl(pt);
m_pEventClick = pControl; / / m_pEventClick赋值
2 、鼠标右键按下
case WM_RBUTTONDOWN:
CControlUI * pControl = FindControl(pt);
m_pEventClick = pControl; / / m_pEventClick赋值
3 、鼠标右键抬起
case WM_RBUTTONUP:
m_pEventClick = NULL; / / m_pEventClick置空
4 、鼠标左抬起
if ( m_pEventClick = = NULL ) break ; / / m_pEventClick为空,跳过
/ / 没有发出事件:UIEVENT_BUTTONUP
|
复选框卡在按下未抬起的状态
左边已经选择,但右边没有选择
![图片描述](http://resources.yxfzedu.com/images/article_images/1000535_SKKPJVCERGGGNXM.webp)
再单击一下复选框,就卡出bug
左边没有选择,但右边已经选择
![图片描述](http://resources.yxfzedu.com/images/article_images/1000535_WZXBA9UH6VE66GM.webp)
最后于 5小时前
被GhHei编辑
,原因:
更多【二进制漏洞-企业微信转发卡bug的漏洞分析】相关视频教程:www.yxfzedu.com