首页
社区
课程
招聘
[原创]看雪CTF2016 第六题
发表于: 2016-11-12 14:07 2398

[原创]看雪CTF2016 第六题

2016-11-12 14:07
2398
来了一题明码比较

在没调试器的情况下,输入假码会访问内存导常而结束程序。

用OD加载,运行输入假码,点注册。OD因为程序异常会停下来,在:
00D52282  |> \0102          add     dword ptr [edx], eax
00D52284  |.  030405 060708>add     eax, dword ptr [eax+9080706]  ;停在这一行
00D5228B  |.  006A 00       add     byte ptr [edx], ch
00D5228E  |.  FF35 242EE000 push    dword ptr [E02E24]               ;  


这个时候内存是:
ds:[09080707]=???
eax=00000001

所在停了。

往上面一点就可以看到跳到这里的跳转:
00D521B4  |.  50            push    eax                                 ;push 真码
00D521B5  |.  FF75 D8       push    dword ptr [ebp-28]      ;push 假码
00D521B8  |.  E8 25F7FFFF   call    00D518E2                  ;这个是比较函数
00D521BD  |.  83C4 08       add     esp, 8
00D521C0  |.  83F8 00       cmp     eax, 0
00D521C3  |.  B8 00000000   mov     eax, 0
00D521C8  |.  0F94C0        sete    al
00D521CB  |.  8945 D4       mov     dword ptr [ebp-2C], eax
00D521CE  |.  8B5D D8       mov     ebx, dword ptr [ebp-28]
00D521D1  |.  85DB          test    ebx, ebx
00D521D3  |.  74 09         je      short 00D521DE
00D521D5  |.  53            push    ebx
00D521D6  |.  E8 B7010000   call    00D52392
00D521DB  |.  83C4 04       add     esp, 4
00D521DE  |>  837D D4 00    cmp     dword ptr [ebp-2C], 0
00D521E2  |.  0F84 9A000000 je      00D52282                  ;这个是关键跳


然后在
00D521B8  |.  E8 25F7FFFF   call    00D518E2                  ;这个是比较函数

下断,重新用od启动程序,输入假码,点注册。
程序在下断处停了下来,然后就可以从栈区里得到注册了。
030BFBD0   006DBDB8  ASCII "233"
030BFBD4   006D4DE8  ASCII "33053055C3055C2E3030553055C2"

"233"是输入的假码,而 "33053055C3055C2E3030553055C2" 就是真码了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//