normal1

elf文件,ida64打开,找到main 函数

关键加密函数

其实就是变种的base64 带了个奇偶异或

按照base64 把3字节分割成4个并且补0

切回来就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
data='OBuf aa21 Td86 rWS8 Wob8 iGhZ Yocb r5vx ZfcC oWv3'
data_l=list(data)
base64_c='nopqrstuvwxyzabcdefghijklm0123456789ABCDEFGHIJKL+/MNOPQRSTUVWXYZ'
base64_cl=list(base64_c)
serial=[]
for i in range(len(data_l)):
for j in range(len(base64_cl)):
if data_l[i]==base64_cl[j]:
serial.append(j)
ascii_list = [ ('{:0>6}').format(str(bin(i)).replace('0b', '')) for i in serial]
output=[]
while ascii_list:
temp_list=ascii_list[:4]
temp_str = ('').join(temp_list)
temp_str_list = [temp_str[x:x + 8] for x in [0, 8, 16]]
temp_str_list = [int(x, 2) for x in temp_str_list]
for x in temp_str_list:
output.append(x)
ascii_list = ascii_list[4:]
for i in range(len(output)):
if(i&1)!=0:
output[i]^=0x60
else:
output[i]^=0x91
flag=''.join(chr(x)for x in output)
print(flag)

flag:C1CTF{th1s_Bas364_is_qcjlCwgS}

这题目不难,小变种。不过网上没有py变种b64解码脚本(我没找到(菜狗是这样的

就用上次做simple10的技巧写了个

今天换个题目写写散散心

加油嗷!