华夏红客基地吧 关注:37贴子:359
  • 0回复贴,共1

iframe XSS安全威胁

只看楼主收藏回复

1)PEID,检查,Borland Delphi 4.0 - 5.0。无壳2)试运行程序,任意输入注册信息,有错误提示“WRONG CODE”3)OD载入程序,用超级字符串查找“WRONG CODE”超级字串参考+ , 条目 174 地址=00441829 反汇编=MOV EDX,CrackMe0.0044188C 文本字串=wrong code双击来到00441829处。并向上找到注册信息计算开始的地方,下断。4)OD重新载入程序,输入注册信息确定后程序中断。004417C6 |. 55 PUSH EBP 在这里下断 004417C7 |. 68 60184400 PUSH CrackMe0.00441860004417CC |. 64:FF30 PUSH DWORDPTR FS:[EAX]004417CF |. 64:8920 MOV DWORDPTR FS:[EAX],ESP004417D2 |. 8D55 FC LEAEDX,DWORD PTR SS:[EBP-4]004417D5 |. 8B83 C8020000MOV EAX,DWORD PTR DS:[EBX+2C8]004417DB |. E8 C419FEFF CALL CrackMe0.004231A4 ; 取假码位数004417E0 |. 8B45 FC MOVEAX,DWORD PTR SS:[EBP-4]004417E3 |. 50 PUSH EAX ; EAX=假码004417E4 |. 8D55 F4 LEAEDX,DWORD PTR SS:[EBP-C]004417E7 |. 8B83 C4020000MOV EAX,DWORD PTR DS:[EBX+2C4]004417ED |. E8 B219FEFF CALL CrackMe0.004231A4 ; 取注册名位数004417F2 |. 8B45 F4 MOVEAX,DWORD PTR SS:[EBP-C] ; EBP-C=注册名004417F5 |. 8D55 F8 LEAEDX,DWORD PTR SS:[EBP-8]004417F8 |. E8 FBFEFFFF CALL CrackMe0.004416F8 ; 算法CALL,跟进004417FD |. 8B55 F8 MOVEDX,DWORD PTR SS:[EBP-8]00441800 |. 58 POPEAX00441801 |. E8 3E23FCFF CALL CrackMe0.00403B44 来源:华夏红客基地:http://miaochenglin.haotui.com 真假注册码比较00441806 |. 75 1A JNZ SHORT CrackMe0.00441822 不相等则跳向失败。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~进入算法CALL来到这里。。。。。。004416F8 /$ 53 PUSHEBX004416F9 |. 56 PUSHESI004416FA |. 57 PUSHEDI004416FB |. 83C4 DC ADDESP,-24004416FE |. 891424 MOV DWORD PTR SS:[ESP],EDX00441701 |. 8BF8 MOV EDI,EAX00441703 |. BB 05033949 MOV EBX,4939030500441708 |. BE 20126348 MOV ESI,486312200044170D |. 8BC7 MOV EAX,EDI0044170F |. E8 2023FCFF CALL CrackMe0.00403A34 ; 取注册名位数00441714 |. 85C0 TEST EAX,EAX ; 有注册名吗?没有则跳向OVER00441716 |. 7E 2E JLE SHORT CrackMe0.0044174600441718 |. BA 01000000 MOV EDX,1 ; 令EDX=10044171D |> 33C9 /XOR ECX,ECX ; ECX清零0044171F |. 8A4C17 FF |MOV CL,BYTE PTRDS:[EDI+EDX-1] ; 取注册名的ASCII值00441723 |. 33D9 |XOR EBX,ECX00441725 |. 33F3 |XOR ESI,EBX00441727 |. F6C3 01 |TEST BL,1 判断EBX的后两位转换成十进制数后的奇偶性0044172A |. 74 0F |JE SHORT CrackMe0.0044173B 偶数就跳,奇数就不跳0044172C |. D1FB |SAR EBX,10044172E |. 79 03 |JNS SHORT CrackMe0.0044173300441730 |. 83D3 00 |ADCEBX,000441733 |> 81F311032001 |XOR EBX,120031100441739 |. EB 07 |JMP SHORT CrackMe0.004417420044173B |> D1FB |SAR EBX,1 ; EBX/2即EBX除以2的一次方0044173D |. 79 03 |JNS SHORT CrackMe0.004417420044173F |. 83D3 00 |ADCEBX,000441742 |> 42 |INC EDX ; EDX+100441743 |. 48 |DEC EAX ; EAX-100441744 |.^ 75 D7 JNZ SHORTCrackMe0.0044171D00441746 |> 8B0424 MOV EAX,DWORD PTR SS:[ESP]00441749 |. 50 PUSH EAX ; 0044174A |. 8BC3 MOV EAX,EBX ; 将EBX的值赋给EAX0044174C |. 25 FFFF0000 AND EAX,0FFFF ; 取EAX的后四位00441751 |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX ; ESP+8=EAX的后四位00441755 |. C64424 0C 00 MOV BYTE PTR SS:[ESP+C],0 ; 0044175A |. C1EB 10 SHR EBX,10 ; 取EBX的前四位0044175D |. 895C24 10 MOV DWORD PTR SS:[ESP+10],EBX ; ESP+10=EBX的前四位00441761 |. C64424 14 00 MOV BYTE PTR SS:[ESP+14],0 ; 00441766 |. 8BC6 MOV EAX,ESI ; 将ESI的值赋给EAX00441768 |. 25 FFFF0000 AND EAX,0FFFF ; 取ESI的后四位0044176D |. 894424 18 MOV DWORD PTR SS:[ESP+18],EAX ; ESP+18=ESI的后四位00441771 |. C64424 1C 00 MOV BYTE PTR SS:[ESP+1C],0 ; 00441776 |. C1EE 10 SHR ESI,10 ; 取ESI的前四位00441779 |. 897424 20 MOV DWORD PTR SS:[ESP+20],ESI ;ESP+20=ESI的前四位0044177D |. C64424 24 00 MOV BYTE PTR SS:[ESP+24],0 ; 00441782 |. 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8] ; 00441786 |. B9 03000000 MOV ECX,3 ; 0044178B |. B8 A4174400 MOV EAX,CrackMe0.004417A4 ; |%.4x-%.4x-%.4x-%.4x00441790 |. E8 6F68FCFF CALL CrackMe0.00408004 ; 合并成注册码。00441795 |. 83C4 24 ADDESP,2400441798 |. 5F POPEDI00441799 |. 5E POPESI0044179A |. 5B POPEBX0044179B . C3 RETN------------------------------------------------------------------------算法总结:1)取用户名第一位的ASCII值。2)将这个值与A=49390305做XOR运算。得到A1。3)将A1与B1=48631220做XOR运算,得到B2。4)将A1最右边两位转换成相应的十进制数,判断其奇偶性。5)若为偶数: 则A1除以2,结果再与1200311进行XOR运算。得到A2。 若为奇数: 则A1除以2,得到A2。6)取用户名下一位的ASCII值,并与A2,B2重复以上运算。7)循环的次数为用户名的位数。8)将最终得到的结果An,Bn分成四段,每段四位。9)An的后四位-An的前四位-Bn的后四位-Bn的前四位。例:注册名tc (两位,所以循环计算两次)第一步 第一次:1)取t的ASCII值74,与49390305进行XOR运算等于493903712)49390371再与ESI(此时ESI=48631220)进行XOR运算等于015A11513)将49390371的后两位即71,转换成十进制为133。4)133是奇数所以。将49390371除以2商为249C81B8。249C81B8再与1200311进行XOR运算等于25BC82A9 第二次:1)取c的ASCII值63,与25BC82A9进行XOR运算等于25BC82CA2)25BC82CA再与ESI(此时ESI=015A1151)进行XOR运算等于24E6939B3)将25BC82CA的后两位即CA,转换成十进制为202。4)202是偶数,所以。将25BC82CA除以2的商等于12DE4165。第二步 第一次:1)将最终EBX的值An=12DE4165,按前四位后四位分成两段每段四位即:12DE,41652)将最终ESI的值Bn=24E6939B,按前四位后四位分成两段每段四位即:24E6,939B 第二次1)将An的后四位作为注册码的第一部分,前四为作为注册码的第二部分2)将Bn的后四位作为注册码的第三部分,前四为作为注册码的第四部分最后输出结果4165-12DE-939B-24E6所以:注册名tc 注册码4165-12DE-939B-24E6


1楼2014-07-03 21:35回复