文章目录
前言
第二题,菜鸟入门。当初打都没写出来,现在复现一下;
羊城杯题目复现:
第一题 知识点 :DES算法 : Ez加密器
第三题 虚假控制流 py字典 MD5算法 ;;Blast
知识点,只是博主个人学习的点。
题目分析and调试过程
IDA打开后,随便看看,暂时看不出什么有用的东西。(这题真不该没出的,但当时插件都没装o(╥﹏╥)o,也不会猜,好菜)
仔细看一下右侧函数一栏,其实就有一个enc函数,先点进去看看,
fkReverse_ 再点进去看看,
这里就差不多可以看出fkReverse_是个base64编码的函数了, fkReverse则是base64码表。同时用Signsrch也可以看到base64,
结合上面,应该是有对base64码表进行一些修改的,在enc结尾下个断点动态调试
得到base64码表。
接着只需要对enc一直向上交叉引用,就可以到达目的函数了,可以看到一个runtime_memequal函数,对比的意思
点开发现,没有什么,用汇编看看
有了
拿来做一个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}