-
-
[原创]CTF第二题
-
2017-10-28 10:58 2857
-
CTF第二题
1
在输入字符串长度 < 12的字符串后,有2 个函数可以拿到 2 元一次方程,但是是无解的。
2
输入大于12位的数时,会发生溢出
3
所以猜测是通过溢出跳转到某个地址,最后定位在了这个地址 0x00413131
##4
这里是一大堆的花指令,只能一步步的跟进,里面有许多跳转,遇到有用的函数就记录下来,最后生成如下汇编:
00413131 add esp, -10 00413150 Xor eax, eax 00413184 Mov dword ptr[41b034], eax 004131ba Pop eax 004131eb Mov ecx, eax 0041321f Pop eax 00413254 Mov ebx, eax 00413289 Pop eax 004132b5 Mov edx, eax 004132ad Mov edx, eax 004132e2 Mov eax, ecx 00413316 Sub eax, ebx 00413349 Shl eax, 2 00413380 Add eax, ecx 004133b5 Add eax, edx 004133e9 sub eax, EAF917E2 00413455 add eax, ecx 00413489 sub eax, ebx 004134bf mov ebx, eax 004134f3 shl eax, 1 00413525 add eax, ebx 00413559 add eax, ecx 0041358f mov ecx, eax 004135c3 add eax, edx 004135f7 sub eax, E8F508C8 00413665 mov eax, ecx 0041365d mov eax, ecx 004136a7 sub eax, edx 004136d8 sub eax, 0c0a3c68 00413747 pop eax 00413777 xor eax, 8101 004137a9 mov edi, eax 004137e2 xor eax, eax 00413817 stos dword ptr es:[edi] 00413830 call 00413841 0041385c pop eax 0041388e push eax 004138ba mov edi, eax 004138e6 push 4e000969 0041391f pop eax 00413950 xor eax, edx 00413983 stos dword ptr:es[edi] 004139b5 xor eax, 10A3E 005139eb stos dword ptr es:[edi] 00413a1c xor eax, ebx 00413a4d xor eax, 22511e14 00413a82 stos dword ptr es:[edi] 00413ab6 xor eax, 61642d 00413b83 mov eax, dword ptr [41b034] 00413bbb jmp eax
分析代码,得出下列三个方程:
key: xxxx xxxx xxxx 11A
x y z
((X - Y) << 2) + x + z = 0xeaf917e2
((X - Y) << 1) + (X-Y) + x + z == E8F508C8
((x - y) << 1) + (x -y) + x - z == 0C0A3C68
解方程后,转换为ascii就是 Just0for0fun11A
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。
赞赏
看原图