国赛Reverse glass

用jeb进行反编译,猜测是要对so文件进行逆1向,分离出so拖进ida。

逻辑看起来比较简单。查看sub_FFC和sub_1088函数

emmm,可以看出是rc4加密。

这题的逻辑是将flag进行rc4加密,再与key进行异或。

key3 = [146, 40, 208, 93, 26, 141, 45, 188, 84, 240, 158, 153, 171, 160, 50, 58, 46, 188, 5,123, 212, 221, 152, 200, 219, 246, 155, 25, 119, 241, 89, 7, 129, 225, 255, 76, 204, 174, 8]
for i in range(0, 39, 3):
    key3[i + 1] ^= key3[i]
    key3[i + 2] ^= key3[i + 1]
    key3[i] ^= key3[i + 2]

print(key3)

c = key3
t = []
key = '12345678'
ch = ''
j = 0  # 初始化
s = list(range(256))  # 创建有序列表
for i in range(256):
    j = (j + s[i] + ord(key[i % len(key)])) % 256
    s[i], s[j] = s[j], s[i]
i = 0  # 初始化
j = 0  # 初始化
for r in c:
    i = (i + 1) % 256
    j = (j + s[i]) % 256
    s[i], s[j] = s[j], s[i]
    x = (s[i] + (s[j] % 256)) % 256
    ch += chr(r ^ s[x])
print(ch)

CISCN{6654d84617f627c88846c172e0f4d46c}

 

posted @ 2021-05-19 22:15  Sk2rw  阅读(92)  评论(0编辑  收藏  举报