首页
社区
课程
招聘
[原创]ctf 2017 第一题 WannaLOL Writeups
2017-6-1 22:05 1950

[原创]ctf 2017 第一题 WannaLOL Writeups

2017-6-1 22:05
1950
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


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

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