谢谢zara(有种迷失的感觉),决定给你分!

解决方案 »

  1.   

    Win98 验证客户密码时,使用了客户传送过来的密码长度,正常长度应为 18。但如果客户端串改了该厂度,改为1,服务器将紧紧验证密码的第一个字节。一次把所有可能的字节试完,你就可以得到密码的第一个字节。然后,把长度改为 2, ......原理如此,具体我也没有干过。
      

  2.   

    原理的确如上
    你们知道袁哥吧,他的主页上有详细介绍,地址已经忘了
    还能下载到两个.dll文件,覆盖后,局域网上98的共享全部都能破,最多按128次回车
    很爽吧,可惜机上的那两个文件名字我也忘了
    :-(
      

  3.   

    是低层的两个vxd文件修改这个文件就OK了,袁哥很早就发现了
      

  4.   

    谁能说说那两个vxd文件名,我想找出来
      

  5.   

    你可以查找一下这个程序: PQWAK.EXE .  试用一下, 看是否和你的要求一样.
      

  6.   

    程序有了还不知道原理???呵呵,另外找袁哥可以去www.nsfocus.com看看.
      

  7.   

    用的就是穷举嘛
    假设密码是6个英文字母
    原来要用26*26*26*26*26*26=308915776次
    现在利用漏洞
    只要26+26+26+26+26+26=156次
    用现在的机器当然是瞬间搞定啦!
    如果计算所有ASCII字符也不过是255*6=1530次
      

  8.   

    程序在哪里可以下载???????????
    原理在这里WINDOWS98共享目录密码校验BUG的分析
                                                                                     袁哥WINDOWS98的共享目录密码校验有BUG。下面是文件VSERVER。VXD中密码校验过程调用的有BUG的一段程序。
    3647是判断客户端密码是不是输入没密码,这时密码项内容是0X20,空格。
          不是就转  LOC-0444。
    365A判断客户端通过网络通信发过来的加密后密码长度是0X18吗,一般都是。这转LOC-0447去把共享目录密码加密同网络通信过来的密码比较,通过TEST EAX,EAX设置ZF标记判断密码对不对。如果密码长度不是0X18,可能是别的什么方式的密码比较,这儿密码是明码没加密。再判断密码长度大于9不,共享密码长度是1-8个字母数字等。下面就是比较密码,后面的循环是以ECX密码长度和ZF标记为结束条件。显然这儿应该有BUG,这密码长度ECX应该是本声密码的长度,而这儿密码长度是网络通信发过来的数据。所以我发过来的数据是1就只比较了一个密码的最前面字节。如果这一字节对就ZF=0因ECX=0退出结果是校验密码成功。03647    loc_0442: ;  xref 03635
    03647  66| 83 3A 20  cmp word ptr [edx],20h ;THE SHARE PASSWORD
    0364B  75 0D         jne short loc_0444 ; Jump if not equal
    0364D  B8 08460002 mov eax,8460002h
    03652  F9 stc ; Set carry flag
    03653  C9            leave ; Procedure exit
    03654  C3 retn
    03655 loc_0443: ;  xref 03640, 3645
    03655  80 3F 00 cmp byte ptr [edi],0
    03658  74 26 je short loc_0446; Jump if equal
    0365A loc_0444: ;  xref 0364B
    0365A  83 F9 18 cmp ecx,18h ; THIS HAS BUG FOUND BY YRG  1999.1.15
    0365D  74 24       je short loc_0447 ; Jump if equal
    0365F  83 F9 09  cmp ecx,9
    03662  77 1C  ja short loc_0446 ; Jump if above
    03664  F5  cmc ; Complement carry
    03665  83 D9 00  sbb ecx,0
    03668  51  push ecx
    03669  53  push ebx
    0366A  8B 1D 000137F4 mov ebx,dword ptr data_0461 ; (137F4=137FCh)
    03670  8B F2 mov esi,edx
    03672  2B C0 sub eax,eax
    03674  4F dec edi03675 locloop_0445: ;  xref 0367C
    03675  47 inc edi
    03676  AC lodsb ; String [si] to al
    03677  8A 04 18 mov al,[eax][ebx]
    0367A  3A 07   cmp al,[edi] ;BUG !!! I CAN SET ECX=1 
    0367C  E1 F7        loopdz locloop_0445  ; Loop if zf=1, ecx>00367E  5B           pop ebx
    0367F  59  pop ecx
    03680  loc_0446: ;  xref 03658, 3662, 36A1
    03680 鶩8  clc ; Clear carry flag
    03681  C9  leave ; Procedure exit
    03682  C3  retn
    03683  loc_0447: ;  xref 0365D
    03683  81 EC 000000E4 sub esp,0E4h
    03689  8B C4 mov eax,esp
    0368B  60 pushad ; Save all regs
    0368C ?2 push edx ; PARAMETER_4
    0368D  50 push eax ; PARAMETER_3
    0368E  8B 45 08 mov eax,dword ptr [ebp+PARAMETER_1]
    03691  8B 40 24 mov eax,dword ptr [eax+24h]
    03694  50 push eax ; PARAMETER_2
    03695  57 push edi ; PARAMETER_1
    03696  E8 000036A1 call sub_0054 ; (06D3C)
    0369B  83 C4 10 add esp,10h
    0369E  85 C0 test eax,eax
    036A0  61 popad ; Restore all regs
    036A1  EB DD jmp short loc_0446
    好了,那就找客户端发密码的代码。下面是VREDIR。VXD的这段相关代码。
    15FCE的18H就是前面的那比较18H的。这儿改成可以1。CALL SUB-0067是加密输入的密码的过程调用。15FEA 的EDX是指向输入的密码的指针。所以15FE9可以改成MOV AL,[EDX],
    MOV [ECX],AL
    JMP 15FF4 就可以。这样进入有密码的共享目录就可以用字母A-Z,数字0-9等试会很快的进入目录的。当然最好那儿自动这么变化那AL,免得每次还要输入可以加快速度。15FC8  8B 4D EC mov ecx,dword ptr [ebp-14h]
    15FCB  8B 55 F4    mov edx,dword ptr [ebp-0Ch]
    15FCE  66| C7 41 07 0018 mov word ptr [ecx+7],18h; PASSWORD LONG 
    15FD4  83 C1 07 add ecx,7
    15FD7  83 C2 35 add edx,35h
    15FDA  8B 45 F8 mov eax,dword ptr [ebp-8]
    15FDD  83 C0 6C add eax,6Ch
    15FE0  89 4D F0 mov dword ptr [ebp-10h],ecx
    15FE3  8B 4D EC mov ecx,dword ptr [ebp-14h]
    15FE6  83 C1 0B add ecx,0Bh
    15FE9  51 push ecx ;LOCKED  PASSWORD SET HERE  
    15FEA  52 push edx ;PASSWORD POINTER
    15FEB  50 push eax
    15FEC  E8 FFFF0EC5 call sub_0067 ; LOCK THE PASSWORD ; (06EB6)
    15FF1  83 C4 0C add esp,0Ch
    15FF4  EB 71 jmp short loc_1765
      

  9.   

    看来这和pqwak.exe所使用的方法还不一样! 因为它并不需要修改任何系统驱动, 而且不仅仅是第一个密码字符, 而是整个密码, 只是它竟能一位接一位的试出来. 也就是说它用穷举法能查出密码的第一个字符, 然后再查第二个字符..., 所以所要的次数为xx+xx+xx...., 而不象一般的穷举是xx*xx*xx....   但它的使用有些限制, 比如对远程管理口令就折腾不出来.
      

  10.   

     zara(有种迷失的感觉) :把你说的pqwak.exe 给我一份好吗? [email protected]
      

  11.   

    poweruser(Loading......) (2001-12-11 13:52:02)  得0分 
    原理不是都给你帖出来了吗,你还要怎样啊?  原理在哪里??
    你好象没有回答!
      

  12.   


    http://www.vckbase.com/vckbase/vckbase11%5Cvc%5Cnonctrls%5Cnetwork_23/1123001.htm