-
-
[原创] 看雪ctf2017秋季第二题
-
发表于: 2017-10-27 06:28 2721
-
#
1.od调试源程序,发现当成获取大于12字符时有溢出,根据后面的函数发现数学运算只需要8个字符,果断输入8个字符,没有溢出执行,
后面的数学处理方程如下:
5(v1-v0)+v1==0x8f503a42
13(v1-v0+v0==0xef503a42
17(v1-v0)+v1==0xf3a9483
7(v1-v0)+v0==0x33a94883
v1为输入字符高4个字符,v0为第4个字符,解了很长时间发现没有结果。换个思路,猜测不是关键算法,猜测溢出是为了跳到其它地点
打开ida pro,在整个pe文件中浏览,发现在00413130处有未反汇编的二进制,而且,413130,对应于输入是01A,也能正常输入,怀疑
开始测试输入12个随机字符,在输入01A,发现跳到exit函数,感觉思路对了,就吧01A改成11A,和21A测试,发现11A能工作,而其
发现是用跳转花指令,保护算法
提取算法如下:
00413525 03C3 add eax, ebx
00413559 03C1 add eax, ecx
0041358F 8BC8 mov ecx, eax
004135C3 03C2 add eax, edx
004135F7 2D C808F5E8 sub eax, E8F508C8 eq2
0041365D 8BC1 mov eax, ecx
00413665 8BC1 mov eax, ecx
004136A7 2BC2 sub eax, edx
004136D8 2D 683C0A0C sub eax, 0C0A3C68 eq3
00413747 58 pop eax ; ctf2017_.00413131
00413777 35 01810000 xor eax, 8101
004137A9 8BF8 mov edi, eax ; ctf2017_.0041B030
004137E2 33C0 xor eax, eax ; ctf2017_.0041B030
00413817 AB stos dword ptr es:[edi] edi=0041b030
00413830 E8 0C000000 call 00413841
0041385C 58 pop eax ; ctf2017_.00413835
0041388E 50 push eax ; ctf2017_.00413835
004138B2 8BF8 mov edi, eax ; ctf2017_.00413835
004138E6 68 6909004E push 4E000969
0041391F 58 pop eax ; ctf2017_.00413835
00413950 33C2 xor eax, edx
00413983 AB stos dword ptr es:[edi] edi=00413839
004139B5 35 3E0A0100 xor eax, 10A3E
004139EB AB stos dword ptr es:[edi]
00413A1C 33C3 xor eax, ebx
00413A4D 35 141E5122 xor eax, 22511E14
00413A82 AB stos dword ptr es:[edi]
00413AB6 35 2D646100 xor eax, 61642D
00413B83 3305 34B04100 xor eax, dword ptr [41B034]
设输入的12个字符,以4个字符为单位,从高到低分别为x1,x2,x3
分析关键公式
1.(x1-x2)4+x1+x3==0xeaf917e2
2.x2=(x1-x2)
3.x1=(x2)2+x2+x1
4.x1+x3==0xe8f508c8
5.x1-x3==0xc0a3c68
根据以上算出x3为0x6e756630,x1=0x7473754a,x2=0x726f6630
注册码为:Just0for0fun11A
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!