首页
论坛
课程
招聘
[原创]第二题writeup
2018-12-3 19:39 918

[原创]第二题writeup

2018-12-3 19:39
918
我觉得厉害之处就是我找不到什么时候输出ok的,算法倒是不难,两个异或,一个是0x1c一个是0x1f,用od跟一下,就可以找到线索,跟第一题差不多,这里就不多说了。jmubojgAbqdvnfmw
难的是,跳转太多,我没有整理出分支出来,ida也用上了,想要逆向整个分支逻辑,还是没搞出来,想学习一下这种跟踪不到输出的手段。准备后天看大神们是怎么逆向算法的。

补充一下:
0034DC80  /> \55            push ebp
0034DC81  |.  8BEC          mov ebp,esp
0034DC83  |.  81EC F0000000 sub esp,0xF0
0034DC89  |.  53            push ebx
0034DC8A  |.  56            push esi
0034DC8B  |.  57            push edi
0034DC8C  |.  51            push ecx
0034DC8D  |.  8DBD 10FFFFFF lea edi,[local.60]
0034DC93  |.  B9 3C000000   mov ecx,0x3C
0034DC98  |.  B8 CCCCCCCC   mov eax,0xCCCCCCCC
0034DC9D  |.  F3:AB         rep stos [dword es:edi]
0034DC9F  |.  59            pop ecx
0034DCA0  |.  894D F8       mov [local.2],ecx
0034DCA3  |.  B9 07604A00   mov ecx,Exam.004A6007                    ;  āāāāāāāāāāāāāāāāāāāā
0034DCA8  |.  E8 07FBFEFF   call Exam.0033D7B4
0034DCAD  |.  837D 08 00    cmp [arg.1],0x0
0034DCB1  |.  74 7B         je XExam.0034DD2E
0034DCB3  |.  C745 EC 00000>mov [local.5],0x0
0034DCBA  |.  EB 09         jmp XExam.0034DCC5
0034DCBC  |>  8B45 EC       /mov eax,[local.5]
0034DCBF  |.  83C0 01       |add eax,0x1
0034DCC2  |.  8945 EC       |mov [local.5],eax
0034DCC5  |>  8B45 08        mov eax,[arg.1]
0034DCC8  |.  50            |push eax
0034DCC9  |.  E8 D8CCFEFF   |call Exam.0033A9A6
0034DCCE  |.  83C4 04       |add esp,0x4
0034DCD1  |.  3945 EC       |cmp [local.5],eax
0034DCD4  |.  73 16         |jnb XExam.0034DCEC
0034DCD6  |.  8B45 08       |mov eax,[arg.1]
0034DCD9  |.  0345 EC       |add eax,[local.5]
0034DCDC  |.  0FBE08        |movsx ecx,[byte ds:eax]
0034DCDF  |.  83F1 1C       |xor ecx,0x1C                                           ;这里是将invalid argument异或0x1c
0034DCE2  |.  8B55 08       |mov edx,[arg.1]
0034DCE5  |.  0355 EC       |add edx,[local.5]
0034DCE8  |.  880A          |mov [byte ds:edx],cl
0034DCEA  |.^ EB D0         \jmp XExam.0034DCBC
0034DCEC  |>  A1 88304A00   mov eax,[dword ds:0x4A3088]
0034DCF1  |.  50            push eax
0034DCF2  |.  8B4D 08       mov ecx,[arg.1]
0034DCF5  |.  51            push ecx
0034DCF6  |.  E8 47FEFEFF   call Exam.0033DB42                       ;这里跟输入的flag 0x1f异或之后的值进行对比,正确则返回0
0034DCFB  |.  83C4 08       add esp,0x8
0034DCFE  |.  85C0          test eax,eax
0034DD00  |.  75 2C         jnz XExam.0034DD2E
0034DD02  |.  C645 E3 6F    mov [byte ss:ebp-0x1D],0x6F           ;这里是 o
0034DD06  |.  C645 D7 6B    mov [byte ss:ebp-0x29],0x6B           ;这里是 k
0034DD0A  |.  0FB645 E3     movzx eax,[byte ss:ebp-0x1D]
0034DD0E  |.  50            push eax
0034DD0F  |.  68 E0314A00   push Exam.004A31E0
0034DD14  |.  E8 91D7FEFF   call Exam.0033B4AA
0034DD19  |.  83C4 08       add esp,0x8
0034DD1C  |.  0FB645 D7     movzx eax,[byte ss:ebp-0x29]
0034DD20  |.  50            push eax
0034DD21  |.  68 E0314A00   push Exam.004A31E0
0034DD26  |.  E8 7FD7FEFF   call Exam.0033B4AA
0034DD2B  |.  83C4 08       add esp,0x8
0034DD2E  |>  33C0          xor eax,eax
0034DD30  |.  5F            pop edi
0034DD31  |.  5E            pop esi
0034DD32  |.  5B            pop ebx
0034DD33  |.  81C4 F0000000 add esp,0xF0
0034DD39  |.  3BEC          cmp ebp,esp
0034DD3B  |.  E8 F5FBFEFF   call Exam.0033D935
0034DD40  |.  8BE5          mov esp,ebp
0034DD42  |.  5D            pop ebp
0034DD43  \.  C2 0400       retn 0x4


像下面这个我本应该看出来的,但是却由于要写代码,不能一心两用,急急忙忙的,却没看出问题来。
003F7DE0    8B5424 04       mov edx,[dword ss:esp+0x4]
003F7DE4    8B4C24 08       mov ecx,[dword ss:esp+0x8]
003F7DE8    F7C2 03000000   test edx,0x3
003F7DEE    75 40           jnz XExam.003F7E30
003F7DF0    8B02            mov eax,[dword ds:edx]
003F7DF2    3A01            cmp al,[byte ds:ecx]
003F7DF4    75 32           jnz XExam.003F7E28
003F7DF6    84C0            test al,al
003F7DF8    74 26           je XExam.003F7E20
003F7DFA    3A61 01         cmp ah,[byte ds:ecx+0x1]
003F7DFD    75 29           jnz XExam.003F7E28
003F7DFF    84E4            test ah,ah
003F7E01    74 1D           je XExam.003F7E20
003F7E03    C1E8 10         shr eax,0x10
003F7E06    3A41 02         cmp al,[byte ds:ecx+0x2]
003F7E09    75 1D           jnz XExam.003F7E28
003F7E0B    84C0            test al,al
003F7E0D    74 11           je XExam.003F7E20
003F7E0F    3A61 03         cmp ah,[byte ds:ecx+0x3]
003F7E12    75 14           jnz XExam.003F7E28
003F7E14    83C1 04         add ecx,0x4
003F7E17    83C2 04         add edx,0x4
003F7E1A    84E4            test ah,ah
003F7E1C  ^ 75 D2           jnz XExam.003F7DF0
003F7E1E    8BFF            mov edi,edi
003F7E20    33C0            xor eax,eax
003F7E22    C3              retn
003F7E23    EB 03           jmp XExam.003F7E28
003F7E25    CC              int3
003F7E26    CC              int3
003F7E27    CC              int3
003F7E28    1BC0            sbb eax,eax
003F7E2A    83C8 01         or eax,0x1
003F7E2D    C3              retn
003F7E2E    8BFF            mov edi,edi
003F7E30    F7C2 01000000   test edx,0x1
003F7E36    74 18           je XExam.003F7E50
003F7E38    8A02            mov al,[byte ds:edx]
003F7E3A    83C2 01         add edx,0x1
003F7E3D    3A01            cmp al,[byte ds:ecx]
003F7E3F  ^ 75 E7           jnz XExam.003F7E28
003F7E41    83C1 01         add ecx,0x1
003F7E44    84C0            test al,al
003F7E46  ^ 74 D8           je XExam.003F7E20
003F7E48    F7C2 02000000   test edx,0x2
003F7E4E  ^ 74 A0           je XExam.003F7DF0
003F7E50    66:8B02         mov ax,[word ds:edx]
003F7E53    83C2 02         add edx,0x2
003F7E56    3A01            cmp al,[byte ds:ecx]
003F7E58  ^ 75 CE           jnz XExam.003F7E28
003F7E5A    84C0            test al,al
003F7E5C  ^ 74 C2           je XExam.003F7E20
003F7E5E    3A61 01         cmp ah,[byte ds:ecx+0x1]
003F7E61  ^ 75 C5           jnz XExam.003F7E28
003F7E63    84E4            test ah,ah
003F7E65  ^ 74 B9           je XExam.003F7E20
003F7E67    83C1 02         add ecx,0x2
003F7E6A  ^ EB 84           jmp XExam.003F7DF0



看雪侠者千人榜,看看你上榜了吗?

最后于 2018-12-4 10:10 被simpower编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回