字母 //如果不是数字跳到41fd99
//对时间的正确性进行检验 .text:0041FD4F cmp [ebp+var_5C], 7BCh .text:0041FD56 jl short loc_41FD91 //年小于1980跳 .text:0041FD58 cmp dword ptr [ebp-5Ch], 81Bh .text:0041FD5F jg short loc_41FD91 //年大于2075跳 .text:0041FD61 cmp dword ptr [ebp-60h], 1 .text:0041FD65 jl short loc_41FD91 .text:0041FD67 cmp dword ptr [ebp-60h], 0Ch .text:0041FD6B jg short loc_41FD91 //月分只能是1-12 .text:0041FD6D cmp dword ptr [ebp-64h], 1 .text:0041FD71 jl short loc_41FD91 .text:0041FD73 cmp dword ptr [ebp-64h], 1Fh .text:0041FD77 jg short loc_41FD91 //号数只能是1-31 .text:0041FD79 cmp dword ptr [ebp-6Ch], 0 .text:0041FD7D jl short loc_41FD91 .text:0041FD7F cmp dword ptr [ebp-6Ch], 3Bh .text:0041FD83 jg short loc_41FD91 .text:0041FD85 cmp dword ptr [ebp-70h], 0 .text:0041FD89 jl short loc_41FD91 .text:0041FD8B cmp dword ptr [ebp-70h], 3Bh //分秒只能是0-59 .text:0041FD8F jle short loc_41FD99 //时间都合法了跳到41FD99 [3] 判断时间区域后面是否有+-号
.text:0041FD99 .text:0041FD99 loc_41FD99: ; CODE XREF: sub_41FAE8+14Aj .text:0041FD99 ; sub_41FAE8+2A7j .text:0041FD99 cmp [ebp+var_88], 0 .text:0041FDA0 jz loc_41FE30 //对于mdtm 20020201112233+111 autexec.bat这样的命令不跳 .text:0041FDA6 movsx eax, [ebp+var_9EE] //处理时间区域后的一个字串 .text:0041FDAD cmp eax, 20h .text:0041FDB0 jz short loc_41FE1C //为空格跳 .text:0041FDB2 movsx eax, [ebp+var_9EE] .text:0041FDB9 cmp eax, 2Dh .text:0041FDBC jz short loc_41FDC3 //为减号跳! .text:0041FDBE cmp eax, 2Bh .text:0041FDC1 jnz short loc_41FE1C //不为加号跳到41FE1C!
[4] 对时间区域有+-号的情况进行处理
.text:0041FDC3 loc_41FDC3: .text:0041FDC3 xor edi, edi .text:0041FDC5 lea eax, [ebp+var_84] //得到时间区域的最后两位(ebp-84) .text:0041FDCB lea esi, [ebp+var_9EE] //得到+号开始的地址 .text:0041FDD1 jmp short loc_41FDDA .text:0041FDD3 loc_41FDD3: .text:0041FDD3 mov dl, [esi] .text:0041FDD5 inc edi //edi为记数器 .text:0041FDD6 mov [eax], dl .text:0041FDD8 inc eax .text:0041FDD9 inc esi .text:0041FDDA .text:0041FDDA loc_41FDDA: .text:0041FDDA movsx ecx, byte ptr [esi] .text:0041FDDD cmp ecx, 20h .text:0041FDE0 jnz short loc_41FDD3 //遇到空格退出
//----------------------上面就是漏洞代码程序本意是把时间区域加号后面的四个字节放在ebp-84变量中 //但没有对长度进行检查,所以不但会覆盖ebp-84,如果是一个超长字串的话还会把ebp-54,ebp-78等变理覆盖!
Q&a上一页 [1] [2] [3] [4] 下一页 |