XCTF_first(re_change)

主函数,调试半天没有看懂加密了个啥,就发现了一个异或

然后GPT跑了一下

这个地方创建了六个函数线程,打开瞧瞧,

MD5加密,找个在线网站解一下。配合前面异或解出FLAG

解出六组字符串,但是拼接在一起的顺序不知道,所以需要爆破。六的阶乘逆天

再看前面异或部分

v10是在前面有一次递归异或。但是v17我是怎么也没看懂,看了wp居然是和v10加密前的字符串不一样的顺序,也就是要爆破六的阶乘次六的阶乘次方。逆天

附上WP


key=[0xFE, 0xE9, 0xF4, 0xE2, 0xF1, 0xFA, 0xF4, 0xE4, 0xF0, 0xE7, 0xE4, 0xE5, 0xE3, 0xF2, 0xF5, 0xEF, 0xE8, 0xFF, 0xF6, 0xF4, 0xFD, 0xB4, 0xA5, 0xB2]

from itertools import permutations

def generate_all_permutations(strings):
    all_permutations = [''.join(p) for p in permutations(strings)]
    return all_permutations

# 输入数据
data0 = 'juhu'
data1 = 'hfen'
data2 = 'laps'
data3 = 'iuer'
data4 = 'hjif'
data5 = 'dunu'

# 将数据放入列表
input_strings = [data0, data1, data2, data3, data4, data5]

# 生成所有可能的乱序拼接结果
result = generate_all_permutations(input_strings)

# 打印所有结果

def xor(strings,ac):
    v11=0
    v10=0
    flag=''
    for i in range(len(strings)):
        v11=ord(strings[i])+i
        v10^=v11
    for i in range(24):
        flag+=chr(v10^ord(ac[i])^key[i])
    print(flag)
# 示例
input_strings = [data0, data1, data2, data3, data4, data5]
result = generate_all_permutations(input_strings)

# 打印所有可能的拼接结果
for combination in result:
    for ab in result:
        if len(combination)==24:
            xor(combination,ab)

搜索到flag    :     goodjobyougetthisflag233

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值