-
-
[原创]2019 Q2 第一题 神秘来信 分析
-
发表于: 2019-6-23 12:40 2379
-
签到题,F5一下。
输入长度为6,最后3位为353,前3位的和为149。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | int __cdecl main( int argc, const char * * argv, const char * * envp) { int val; / / esi unsigned int v4; / / kr00_4 unsigned int i; / / ecx unsigned __int8 input [ 6 ]; / / [esp + 10h ] [ebp - 3Ch ] CPPEH_RECORD ms_exc; / / [esp + 34h ] [ebp - 18h ] val = 0 ; printf(( int ) "请输入序列号:\n" ); scanf( "%s" , input ); v4 = strlen((const char * ) input ); if ( v4 < 7 && input [ 5 ] = = '3' && input [ 4 ] = = '5' && input [ 3 ] = = '3' && input [ 2 ] + input [ 1 ] + input [ 0 ] = = 149 ) { i = 0 ; if ( v4 ) { do val = input [i + + ] + 16 * val - 48 ; while ( i < v4 ); } ms_exc.registration.TryLevel = 0 ; printf(( int ) "error!\n" ); while ( 1 ) ; } printf(( int ) "error\n" ); return 0 ; } |
F5的代码不完整,直接看汇编
函数开头设置异常处理函数:
1 2 3 4 5 6 7 | .text: 00401260 push ebp .text: 00401261 mov ebp, esp .text: 00401263 push 0FFFFFFFEh .text: 00401265 push offset stru_41CC98 .text: 0040126A push offset __except_handler4 .text: 0040126F mov eax, large fs: 0 .text: 00401275 push eax |
处理函数显示"success",所以需要产生异常
1 2 3 4 5 6 7 8 | .rdata: 0041CC98 stru_41CC98 dd 0FFFFFFE4h ; GSCookieOffset .rdata: 0041CC98 ; DATA XREF: _main + 5 ↑o .rdata: 0041CC98 dd 0 ; GSCookieXOROffset ; SEH scope table for function 401260 .rdata: 0041CC98 dd 0FFFFFFB4h ; EHCookieOffset .rdata: 0041CC98 dd 0 ; EHCookieXOROffset .rdata: 0041CC98 dd 0FFFFFFFEh ; ScopeRecord.EnclosingLevel .rdata: 0041CC98 dd offset loc_401373 ; ScopeRecord.FilterFunc .rdata: 0041CC98 dd offset sucesss ; ScopeRecord.HandlerFunc |
6位数字转化为16进制数:
1 2 3 4 5 6 | .text: 00401330 movzx eax, [ebp + ecx + input ] .text: 00401335 shl esi, 4 .text: 00401338 add esi, 0FFFFFFD0h .text: 0040133B add esi, eax .text: 0040133D inc ecx .text: 0040133E cmp ec |
16进制数与地址0x401353相减,作为除数,让除数等于0就能产生异常
1 2 3 4 5 6 7 8 9 10 | .text: 0040134E call loc_401354 .text: 0040134E ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .text: 00401353 db 0EBh .text: 00401354 ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .text: 00401354 .text: 00401354 loc_401354: ; CODE XREF: _main + EE↑j .text: 00401354 pop eax .text: 00401355 sub eax, 0 .text: 00401358 sub esi, eax .text: 0040135A div esi |
故key为401353
最后于 2019-6-23 13:07
被mratlatsn编辑
,原因:
赞赏
他的文章
赞赏
雪币:
留言: