chaosnaix 发表于 2019-2-21 10:49

春节红包第二题-writeup-od版

题目打包下载地址

https://down.52pojie.cn/Challenge/Happy_New_Year_2019_Challenge.rar

https://static.52pojie.cn/static/image/hrline/1.gif

第二题


初学,比较菜,只做出来了第二题,还请大佬们多指教。
还是按照习惯,先查壳。发现应该是upx壳。

用od打开,现在可以看到程序的入口,从这也可以发现入口的特征确实为upx壳的特征。

所以此处我们可以尝试使用“esp定律”来进行脱壳
具体方法为:
1.先od加载程序chunjiekuaile.exe,此时自然就到了程序的入口点,发现pushad

2.这时F8单步执行一步,然后可以看到寄存器区域的esp反色高亮

3.此时我们在esp高亮处点击右键 ->选择HW break,即可下一个硬件断点

插一句,这里也可使用另一种方式下断点,效果是一样的。在高亮出,右击选择“数据窗口中跟随”。

然后在数据窗口中右键,选择 "断点" -> "硬件访问“ -> "byte"(其他两个也都行)

4.这里可以打开,”调试“->"硬件断点",来进行查看断点是否下成功

5.接下来F9运行程序,然后我们可以看到程序断在了第一行那里,按照规律最下面的jmp,将带领我们跳至oep,也就是程序真正的入口,我们可以在那行用F4,直接运行到选定位置,然后再F8单步执行一次

6.此时就来到了正真的程序入口点,可以看到程序入口点OEP的特征和通常的Microsoft Visual C++ 6.0的OEP特征非常相似,所以这时我们可大致断定我们找到了OEP

7.这时我们在OEP处右键选择“用ollydump脱壳调试进程”

8.然后使用默认的配置,点击脱壳,然后保存就好,我们这里保存为chunjiekuaile2.exe

9.这时再把我们保存的chunjiekuaile2.exe拖入peid中,检查是否已经把壳脱掉,结果可发现已经没有了壳,此时我们就可以大胆得开始调试程序了

10.将脱完壳的程序拖入od中,F9运行起来,现在就开始猜密码了,随便输几个数字,发现会提示“长度错误”



11.按照老套路,右键选择“中文搜索引擎”->“智能搜索”

11.可以发现,运气很好,搜索到了相关字符,双击跳转至该处

12.由于这次是找flag,所以不能像以前破解一些小软件那样,nop或修改跳转之类的一把梭,只能老老实实分析程序的逻辑,所以我们向上看到这行,发现这里有一个获取字符串长度的操作,然后接下来就是一个cmp指令,那我们基本可以猜测这里就是校验字符串长度的地方。由于是和十六进制0x10进行比较,也就是十进制的16,所以我们可以尝试使用十六位的字符进行测试

13.这时我们可以发现,已经通过了长度的校验,提示变成了“内容错误”

14.还是之前的套路,我们继续搜索字符串,发现也可以找到相关的字符串,双击转到该处,F2下一个断点

15.我们再往上看,发现有惊喜,发现了“正确”的字样,那么我们可以猜测最终校验密码的代码就在附近




16.于是我们继续往上,之前做CTF的直觉告诉我,可能这就是我们要的flag,数了一下刚好16个字符,先不多想,复制进去试一下,记得遇到断点了就F9放过一下

17.发现并不对。。。。。唉还是得耐着性子跟一跟,由于之前基本确定在00401288那行应该就是最终成功的提示,所以我们可以做出推断,往这行指令之后的跳转,基本都要避免,比如00401281的这个jnz。那么接下来任务就是要看再怎样的条件才可使指令最终一步一步执行到这里

18.大胆猜想一下,上面的flag应该是进行了一些变换所以才和正真的flag有差别,那现在我们暂定分析范围在,之上的疑似flag那,到正确提示之间。于是先在004011FF那下个断点进行调试

19.按照我们的猜想,字符串一定是经过与正确的字符串进行比较才能完成校验,于是我们可以着重关注一下如cmp之类的比较类的指令。我们一步步单步来跟,发现在经过004010E0 => call chunjiek.004010E0,之后ESI和EDI之中的分别为我们的测试字符串"TESTbNhzYhdu2019"和另一串长度相同的字符串。而且接下来的各类比较都是围绕着这两个寄存器来展开的,所以我们可猜测EDI中的字符就是要找的flag。最快速的方法就是使用这个字符串再测试一下,发现通过了校验,正是我们要找的flag。这里大家可以动手试一下






Zyc921 发表于 2019-2-22 14:26

“5.接下来F9运行程序,然后我们可以看到程序断在了第一行那里,按照规律最下面的jmp,将带领我们跳至oep,也就是程序真正的入口,我们可以在那行用F4,直接运行到选定位置,然后再F8单步执行一次”

F4之后F8根本跑不到第六步!
根据你的截图 我把入口地址改为1362后才能把壳脱下{:301_998:}

Hmily 发表于 2019-2-22 17:35

chaosnaix 发表于 2019-2-21 11:59
好了吗,最后好像莫名其妙多张图片,删不掉

发现问题了,你这行下面没图,丢了吧?

2.这时F8单步执行一步,然后可以看到寄存器区域的esp反色高亮

xu3274263 发表于 2019-2-21 11:09

Hmily 发表于 2019-2-21 11:26

@chaosnaix 图片盗链了,上传下本地吧。

虚无 发表于 2019-2-21 11:39

本帖最后由 虚无 于 2019-2-21 11:42 编辑

看不到图片啊,楼主更新一下。
补充一下,第三题od版的有没有啊,哪位大侠能出一个分析思路。

chaosnaix 发表于 2019-2-21 11:59

Hmily 发表于 2019-2-21 11:26
@chaosnaix 图片盗链了,上传下本地吧。

好了吗,最后好像莫名其妙多张图片,删不掉

雷爵大大 发表于 2019-2-21 12:06

看的眼泪流啊,看不懂,支持大佬

1257276297 发表于 2019-2-21 12:57

很奇怪为什么你的OD可以查到中文字符,我用的也是同样的吾爱的,却查不到

Hmily 发表于 2019-2-21 13:11

chaosnaix 发表于 2019-2-21 11:59
好了吗,最后好像莫名其妙多张图片,删不掉

帮你删除了。

chaosnaix 发表于 2019-2-21 13:46

Hmily 发表于 2019-2-21 13:11
帮你删除了。

哈哈,谢谢谢谢

chaosnaix 发表于 2019-2-21 13:47

1257276297 发表于 2019-2-21 12:57
很奇怪为什么你的OD可以查到中文字符,我用的也是同样的吾爱的,却查不到

要脱壳才行
页: [1] 2 3 4
查看完整版本: 春节红包第二题-writeup-od版