记一次失败的 reverse 经历

Posted on Oct 31, 2021

打这篇blog的时候再次失败了。打到一半电脑没电,几百字的 blog(近期最长啊!)就没了啊orz我恨

题源

司虎老师的《网络安全基础与应用》选做题 happyreverse

废话

剪掉了!(其实是因为压力太大,没力气再码一遍了)

最远尝试

损坏 rar 修复

拿到 rar 的时候解压不了。iPad 上换了 n 个软件也不行,回去用电脑仍然未果。考虑这玩意就是坏了。用时 2h 配置好 Windows 官方 VMware 虚拟机之后扔进 3 个我到盗版软件库下的毒瘤 rar 修复软件,有一个能用,顺利拿下,解压后是 MFC 写的。

查壳

刚开始下的 peid 有毛病,告诉我是穿山甲壳,傻傻的信了,到看雪找了 n 小时的破壳脚本 run 了一下没进展,开始思考是不是根本就没壳,换了看起来正常一点的 peid 结果是没壳的(最后找老师确认也是这样)。白跑一场,不过没壳是好事。

开始逆向

动态调试 ollydbg + 静态 IDA Pro。

逆向过后查 string 找到 flag 位置,看到 flag 已经被加密了。主函数里面没有加密函数。找到其他函数,看起来是类RC4算法,不过能力不够,没看出来这个具体是怎么操作的,遂寄了。

动态看了下行为,具体是:

  • 接收输入input
  • 把 input base64 一遍
  • 把编码后的 input 继续 rc4 一遍
  • 对 hard-code 的 flag 进行同样操作
  • 比较,得出结果

大概是这样一个流程。具体里面的反汇编代码我做了些注释,等有时间会放上来。

感想

应该是自己第一次做 ctf reverse 题,感觉难度比在网上搜罗到的所有rc4/mfc题解都难一个等级,各种输入函数和mfc组件函数混在一起,简直是 disaster

应该是自己太菜了哭