[HUBUCTF 2022 新生赛]simple_RE

附件是.exe文件

用ida打开F5反汇编得到:

反汇编C代码

sub_401570函数对输入的flag进行变换,memcmp函数用于判断两个字符串的前n个字符是否相等

进入sub_401570:

函数代码

函数代码

(经过chatgpt分析) 分析出这个函数的功能:

函数功能

到这里我认为只要把已知字符串进行base64解码就行,发现是乱码

经过wp提示,原来是base64换表

aQvejafhmuyjbac=”qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD”是映射表

写脚本复原:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import base64

c = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM"
flag = ""

table = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD+/"
table2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in c:
for j in range(len(table)):
if i == table[j]:
flag += table2[j]

flag = base64.b64decode(flag)
print(flag)

base64原理:https://www.cnblogs.com/xiaxveliang/p/15097947.html

base64代码识别:

daima