首页
社区
课程
招聘
[原创] 看雪ctf2017秋季第二题
2017-10-27 06:28 2213

[原创] 看雪ctf2017秋季第二题

2017-10-27 06:28
2213
 

#

 

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]

00413BBB - FFE0 jmp eax

设输入的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


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回