记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现

文章目录

  • 前言
  • 题目分析and调试过程
  • exp

前言

第二题,菜鸟入门。当初打都没写出来,现在复现一下;
羊城杯题目复现:
第一题 知识点 :DES算法 : Ez加密器
第三题 虚假控制流 py字典 MD5算法 ;;Blast

知识点,只是博主个人学习的点。

题目分析and调试过程

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第1张图片

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第2张图片
IDA打开后,随便看看,暂时看不出什么有用的东西。(这题真不该没出的,但当时插件都没装o(╥﹏╥)o,也不会猜,好菜)

仔细看一下右侧函数一栏,其实就有一个enc函数,先点进去看看,
记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第3张图片
fkReverse_ 再点进去看看,

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第4张图片

这里就差不多可以看出fkReverse_是个base64编码的函数了, fkReverse则是base64码表。同时用Signsrch也可以看到base64,

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第5张图片

结合上面,应该是有对base64码表进行一些修改的,在enc结尾下个断点动态调试
记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第6张图片

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第7张图片
得到base64码表。

接着只需要对enc一直向上交叉引用,就可以到达目的函数了,可以看到一个runtime_memequal函数,对比的意思
记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第8张图片
点开发现,没有什么,用汇编看看

记 :2023CTF羊城杯-Reverse方向 CSGO ‘ ‘ 题目复现_第9张图片

有了

拿来做一个base64自定义码表的解码就好

exp

import base64

str1 = "cPQebAcRp+n+ZeP+YePEWfP7bej4YefCYd/7cuP7WfcPb/URYeMRbesObi/="

string1 = "LMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJK"     # 替换的表

string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))

# DASCTF{73913519-A0A6-5575-0F10-DDCBF50FA8CA}

你可能感兴趣的:(CTF比赛WP,学习,python,网络安全,CTF,Reverse)