JCTF-逆向

re100

  • 下载下来并没有拓展名, 查看16进制发现是个apk文件。
  • 拖入JEB或者APK改之理。

  • 还有一部分没截到,根据题意, 一个字符串要先经过 MD5 加密, 然后将得到的MD5值进行base64加密, 如果与下面这一串相等则正确。

    NzU2ZDJmYzg0ZDA3YTM1NmM4ZjY4ZjcxZmU3NmUxODk=

  • 上面的字符串进行base64解密得到

756d2fc84d07a356c8f68f71fe76e189

  • 曾经想过正向爆破…

  • 但是正向爆破需要的时间…太多太多,而且不知道flag有多少位。

  • 在线解密得到:

}321nimda{galflj

  • 反过来就是flag了

jlflag{admin123}

re200

  • 查看16进制 文件头为 4D 5A,为exe文件的文件头

  • 但是…

  • 而且载入IDA也没啥效果, 而且没法载入OD。
  • WP说是文件头有损坏, 那么下面的任务就是修复PE文件头了。

  • 位于 30h,c位置 的E9 为e_lfanew字段, 这个字段指明了PE文件头在文件中的位置
  • PE文件头为50 45 00 00
  • 显然 E9 指向的位置不对, 应该指向50才对,所以需要将E8改为E9
  • 再将ff改为00
  • 保存, 强迫症… 加个拓展名.exe

  • 这下正常显示了。

  • 拖入IDA, 一堆C++伪代码, 看着有点恶心。迷迷糊糊按着WP写了个破解算法。

  • 起初写的python算法, 然后发现,执行效率低得感人…

  • 具体效率能有多低, 看这一张图就知道了….

  • 补充: 重新测试了一遍…原来是我算法有个地方写错了…C和python的都写错了…

  • 但python效率还是低, C的都按照错误算法输出了好多…但python一个都没输出….

  • 加法优先级大于异或。。。

  • 输出有多组,挨个代进去, 最后15 6 13这一组是正确的。

  • 再结合IDA静态分析的结果,最后flag为:

jlflag{15613abc}