[SWPUCTF 2021 新生赛]fakebase

发布时间 2023-05-09 18:30:15作者: TFOREVERY

查壳:

双击吧:

简单的逻辑,不要怕那个循环,也不要去纠结那个循环。

首先看我们要找的是啥:b1嘛,也就是将flag每个字符转化成十进制后,再转成二进制,一个字符的二进制接后一个字符的二进制链接而成的字符串,再将这串字符串转为十进制。也就是b1

由除法原则我们知道,要想还原b1,首先得倒着来,其次能将这么大的一个数据转化成字符来脚本咯:(这是我参考某位大佬的脚本,不记得是谁了QWQ)

import libnum

s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
s = 'u#k4ggia61egegzjuqz12jhfspfkay'
for k in range(5):  # ascii 最大为128 % 31 == 4
    b1 = k
    for i in range(len(s)-1, -1, -1):  # 倒序查找
        b1 = b1 * 31 + s_box.index(s[i])
    print(libnum.n2s(int(b1)))  # 十进制转化成字符,libnum.s2n --> 字符转化成十进制

得到NSSCTF