zoukankan      html  css  js  c++  java
  • 北京理工大学信息安全与对抗竞赛crackme02分析

    不知道为什么 ,最近睡眠不好,晚上睡不着,早上醒得早。看吧,今天早上又被鸟吵醒了。

    醒了,看着无事来破解下这个,在测试过程中发现,这个crackme有个搞笑的地方。

    就是注册码只要是1234,无论你输入或者不输入用户名,都会提示成功(当然有例外,这也是本题的所在),到官方一提交,夷,错了,我勒个去,居然没看题目就做了。

    原来是要求用户名必须是2012,得,你牛。

    看我怎么搞定你!

    当然,首先还是找到按钮事件。

     1 00401004   .  55            push    ebp
     2 00401005   .  8BEC          mov     ebp, esp
     3 00401007   .  81EC 10000000 sub     esp, 10
     4 0040100D   >  6A FF         push    -1
     5 0040100F   .  6A 08         push    8
     6 00401011   .  68 11000116   push    16010011
     7 00401016   .  68 01000152   push    52010001
     8 0040101B   .  E8 D7010000   call    004011F7                         ;  获取注册码
     9 00401020   .  83C4 10       add     esp, 10
    10 00401023   .  8945 FC       mov     dword ptr [ebp-4], eax
    11 00401026   .  68 04000080   push    80000004
    12 0040102B   .  6A 00         push    0
    13 0040102D   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    14 00401030   .  85C0          test    eax, eax                         ;  注册码输入是否为空
    15 00401032   .  75 05         jnz     short 00401039
    16 00401034   .  B8 509B4600   mov     eax, 00469B50
    17 00401039   >  50            push    eax
    18 0040103A   .  68 01000000   push    1
    19 0040103F   .  BB 60124000   mov     ebx, 00401260
    20 00401044   .  E8 A8010000   call    004011F1                         ;  eax为注册码的十六进制形式
    21 00401049   .  83C4 10       add     esp, 10
    22 0040104C   .  8945 F8       mov     dword ptr [ebp-8], eax           ;  注册码放入XXX
    23 0040104F   .  8B5D FC       mov     ebx, dword ptr [ebp-4]
    24 00401052   .  85DB          test    ebx, ebx
    25 00401054   .  74 09         je      short 0040105F
    26 00401056   .  53            push    ebx
    27 00401057   .  E8 8F010000   call    004011EB
    28 0040105C   .  83C4 04       add     esp, 4
    29 0040105F   >  E8 AF000000   call    00401113                         ;  关键call,其实就是读取用户名的值
    30 00401064   .  3945 F8       cmp     dword ptr [ebp-8], eax           ;  注册码与XXXXX进行比较
    31 00401067   .  0F85 40000000 jnz     004010AD                         ;  关键跳
    32 0040106D   .  68 04000080   push    80000004

    来看看关键call中的一部分。

    1 0040118F  |.  8945 FC       mov     dword ptr [ebp-4], eax
    2 00401192  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    3 00401195  |.  E9 00000000   jmp     0040119A
    4 0040119A  |>  8BE5          mov     esp, ebp

    如果你仔细看,你会觉得真他妈脑残。

    就像看a=b;   b=a;一样。而且还jmp到下一句。

    反正总的来说,关键call就是把用户名,也就是2012放入堆栈中,等着对比就可以了。

  • 相关阅读:
    MySQL进阶(视图)---py全栈
    py基础__socket编程
    MIPS Instruction Set
    WD-保修验证(WCC7K4ARTDF1)
    Seagate-保修验证(za25shrx)
    excel-vlookup
    ebook https://salttiger.com/category/notification/
    远程登录DSM,显示“您没有权限使用本项服务?
    tplink-如何远程WEB管理路由器?
    synology terminal
  • 原文地址:https://www.cnblogs.com/tk091/p/2509401.html
Copyright © 2011-2022 走看看