Find The Easy Pass

前言

Author: 0x584A

84993772.png

这是一道破解题目,下载完成后查看文件类型:

85069270.png
32位Windows的程序,放Windows 10里去运行:

502636.png

输入密码,并验证输入结果是否正确,当输入错误时会提示:”Wrong Password!”

549940.png

Ollydbg

开启 Ollydbg 加载它,并运行调试。

835430.png

首先记一下程序的入口地址,方便以后返回该处。

00454450 > $  55            push ebp

先前已经知道了当密码输入错误时,会提示错误的字符,尝试使用智能搜索下,看能否查到该字符串。

986582.png

1037612.png

可以看到,已经搜到了对应的是 00454144这个地址,双击后会进入该地址的反汇编窗口。

1227921.png

在高亮的这一行中可以看到来源地址是00454136,代表是从它那跳转过来的。

jnz short EasyPass.00454144 中的 jnz 在汇编中代表的是条件跳转,也就是不满足条件则跳转到00454144这个地址。

nop是删除跳转,就是代表什么也不做的意思
je是条件跳转,满足条件就跳转,不满足就不跳转
jnz也是条件跳转,不满足条件就跳转
jmp是无条件跳转,强制跳转到

00454136 地址下个点断 f2,随后随便输入一个密码,我这里用1231

1833480.png

此时调试状态处于暂停,双击它,将 jnz 的地址改为 00454138,也就是它的下一行,改变它的逻辑。

2071925.png

点击 单步步过 已经进入了我们想要的地址行

2134575.png

但是这样并没有什么意义,仅是将 Good Job. Congratulations 弹框输入而已,我们在 00454131 处下断。

2700552.png

这个时候就获取到了与我们输入1231 进行比对的密码:fortran!

从新运行这个程序,直接输入需要对比的密码,提示正确。

2782898.png

直接提交flag:HTB{fortran!}

原因

单步步入 至这个 class,可以看到存在 cmp。

3606569.png

可以看到 EAX 已移动到 ESI,然后 EDX 移动到 EDI

cmp 语句用于比较两个寄存器(整数,字符代码也是整数,因此可以用 CMP 指令):

  • EAX:包含我们输入的密码
  • EDX:其中包含正确的密码

所以直接查看 EDX 寄存器的内容解决这题。

其他


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。