-
-
[原创]ctf 2017 第一题 WannaLOL Writeups
-
发表于: 2017-6-1 22:05 2354
-
004011F4 $ 55 push ebp 004011F5 . 8BEC mov ebp, esp 004011F7 . 83EC 1C sub esp, 1C 004011FA . 8D45 E4 lea eax, dword ptr [ebp-1C] 004011FD . 6A 15 push 15 ; /Count = 15 (21.) 004011FF . 50 push eax ; |Buffer 00401200 . 68 E9030000 push 3E9 ; |ControlID = 3E9 (1001.) 00401205 . FF35 38AA4000 push dword ptr [40AA38] ; |hWnd = 0019061E (class='#32770',parent=003506D0) 0040120B . FF15 A8704000 call dword ptr [<&USER32.GetDlgItemTe>; \GetDlgItemTextA 00401211 68 F4010000 push 1F4 ; /Timeout = 500. ms 00401216 FF15 00704000 call dword ptr [<&KERNEL32.Sleep>] ; \Sleep 0040121C . 8D45 E4 lea eax, dword ptr [ebp-1C] 0040121F . 50 push eax 00401220 . E8 DB000000 call 00401300 ; strlen 00401225 . 83F8 04 cmp eax, 4 00401228 . 59 pop ecx 00401229 . 0F85 A0000000 jnz 004012CF ; 长度为4 0040122F . 6A 30 push 30 00401231 . 59 pop ecx 00401232 . 384D E4 cmp byte ptr [ebp-1C], cl ; 第1位不等于‘0’ 00401235 . 0F84 94000000 je 004012CF 0040123B . 384D E5 cmp byte ptr [ebp-1B], cl ; 第2位不能为'0' 0040123E . 0F84 8B000000 je 004012CF 00401244 . 384D E6 cmp byte ptr [ebp-1A], cl ; 第3位不能为'0' 00401247 . 0F84 82000000 je 004012CF 0040124D . 384D E7 cmp byte ptr [ebp-19], cl ; 第4位不能为’0‘ 00401250 . 74 7D je short 004012CF 00401252 . 807D E4 31 cmp byte ptr [ebp-1C], 31 ; 第1位等于 ’1‘ 00401256 . 75 77 jnz short 004012CF 00401258 . 807D E5 35 cmp byte ptr [ebp-1B], 35 ; 第2位等于'5' 0040125C . 75 71 jnz short 004012CF 0040125E . 74 03 je short 00401263 00401260 . 75 01 jnz short 00401263 00401262 E8 db E8 00401263 > 66:B8 0800 mov ax, 8 00401267 . 66:35 0700 xor ax, 7 0040126B . 0FBE45 E6 movsx eax, byte ptr [ebp-1A] ; 第3位 0040126F . 2BC1 sub eax, ecx ; 减 '0' 00401271 . 8945 FC mov dword ptr [ebp-4], eax 00401274 . 0FBE45 E4 movsx eax, byte ptr [ebp-1C] ; 第1位 00401278 . DB45 FC fild dword ptr [ebp-4] ; 第3位-'0' 0040127B . 2BC1 sub eax, ecx ; 第1位-’0‘ 0040127D . 8945 FC mov dword ptr [ebp-4], eax 00401280 . 0FBE45 E5 movsx eax, byte ptr [ebp-1B] ; 第2位 00401284 . DB45 FC fild dword ptr [ebp-4] ; 第1位-'0' 00401287 . 2BC1 sub eax, ecx 00401289 . 8945 FC mov dword ptr [ebp-4], eax ; 第2位-‘0’ 0040128C . DA75 FC fidiv dword ptr [ebp-4] ; (第一位-‘0’)/(第二位-'0') 0040128F . 0FBE45 E7 movsx eax, byte ptr [ebp-19] ; 第4位 00401293 . 2BC1 sub eax, ecx ; 第4位-‘0’ 00401295 . 8945 FC mov dword ptr [ebp-4], eax 00401298 . DEE9 fsubp st(1), st ; (第3位-‘0’)-(第一位-‘0’)/(第二位-'0') 0040129A . DA4D FC fimul dword ptr [ebp-4] ; * (第4位-‘0’) 0040129D . D80D 1C714000 fmul dword ptr [40711C] ; * 16 004012A3 . D95D FC fstp dword ptr [ebp-4] 004012A6 . 74 03 je short 004012AB 004012A8 . 75 01 jnz short 004012AB 004012AA E8 db E8 004012AB > 66:B8 0800 mov ax, 8 004012AF . 66:35 0700 xor ax, 7 004012B3 . D945 FC fld dword ptr [ebp-4] 004012B6 . D81D 18714000 fcomp dword ptr [407118] ; == 384 004012BC . 6A 00 push 0 004012BE . 68 78804000 push 00408078 ; ASCII "CrackMe 2017 CTF" 004012C3 . DFE0 fstsw ax 004012C5 . 9E sahf 004012C6 . 75 0E jnz short 004012D6 004012C8 . 68 5C804000 push 0040805C ; ASCII "Registration successful !" 004012CD . EB 0C jmp short 004012DB 004012CF > 6A 00 push 0 004012D1 . 68 48804000 push 00408048 ; ASCII "CrackMe 2017 CTF v2" 004012D6 > 68 40804000 push 00408040 ; ASCII "error !" 004012DB > FF35 34AA4000 push dword ptr [40AA34] ; |hOwner = 003506D0 ('PEDIY CTF 2017',class='myWindowClass') 004012E1 . FF15 AC704000 call dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA 004012E7 . C9 leave 004012E8 . C3 retn
根据上面得到一个方程:
设 x= 第三位-'0'; y=第4位-'0'得:
(x- 1/5 ) * y * 16 =384
(x- 1/5 ) * y =24
(5x-1) * y =120
得到 (5x-1) 是 120中的约数中的一个,其中 4 和24 都满足。
得到两组注册码:
151N
1555
也可以用程序算:
#include <stdio.h> int main(void) { int i=1,x,y; for(i=1;i<=120;i++) { if ( (120 % i==0) && ((i+1)%5==0) ) { x=(i+1)/5 + '0'; y=120/i + '0'; if ((x<=127) && (y<=127)) { printf("15%c%c\n",x, y); } } } }
程序算出的结果也是:
151N
1555
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: