BaseCTF-[Week3] 出题人已疯-快坚持不下去的第六天

DIE 查,发现是 .NET,拖⼊ dnSpy

加密的代码

private void Btn_Submit_Click(object sender, RoutedEventArgs e)
{
char[] array = this.Tb_Input.Text.ToCharArray();
char[] array2 = string.Join("", this.sentences).ToCharArray();
for (int i = 0; i < array.Length; i++)
{
array[i] *= array[i];
array[i] = (char)((int)array[i] ^ i ^ (int)array2[i % array2.Lengt
h]);
}
bool flag = new string(array) != new string((from c in source select (
char)c).ToArray<char>());
if (flag)
{
MessageBox.Show("\ud83d\ude2d我有异或症!");
}
else
{
MessageBox.Show("\ud83d\ude0b异或症好了!");
}
}

exp:

import libnum

source = [
    24164, 27173, 32145, 17867, 40533, 21647, 17418, 30032, 27950, 62998, 60750, 64870,
    52680, 61797, 49234, 59762, 16704, 19200, 32132, 24038, 21764, 30130, 28113, 23070,
    27413, 27917, 28938, 50207, 64834, 60132, 64832, 63334, 55103, 22176, 21991, 20073,
    22281, 19476, 28302, 24336, 24720, 19544, 23018, 43976
]

# 这里将 xl 合并成一个单一的字符串
xl = ("你以为我还会在乎吗?\ud83d\ude2c\ud83d\ude2c\ud83d\ude2c我在昆仑山练了六年的剑\ud83d\ude1f\ud83d\ude1f\ud83d\ude1f我的心早就和昆仑山的雪一样冷了\ud83d\ude10\ud83d\ude10\ud83d\ude10我在大润发杀了十年的鱼\ud83d\ude2b\ud83d\ude2b\ud83d\ude2b我以为我的心早已跟我的刀一样冷了\ud83d\ude29\ud83d\ude29\ud83d\ude29"
      "我早上坐公交滴卡的时候和司机大叔说“两个人”,司机惊讶地看着我“你明明就是一个人,为什么要滴两个人的卡?”我回他,“我心中还有一个叫Kengwang的。”司机回我说,“天使是不用收钱的。”"
      "(尖叫)(扭曲)(阴暗的爬行)(扭动)(阴暗地蠕动)(翻滚)(激烈地爬动)(痉挛)(嘶吼)(蠕动)(阴森的低吼)(爬行)(分裂)(走上岸)(扭曲的行走)(不分对象攻击)"
      "地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!地球没我照样转?硬撑罢了!"
      "扭曲上勾拳!阴暗的下勾拳!尖叫左勾拳!右勾拳爬行!扭动扫堂腿!分裂回旋踢!这是蜘蛛阴暗的吃耳屎,这是龙卷风翻滚停车场!乌鸦痉挛!老鼠嘶吼!大象蠕动!愤怒的章鱼!无差别攻击!无差别攻击!无差别攻击!")

flag = ''
for i in range(len(source)):
    # 确保 xl[i % len(xl)] 是一个字符,并且要取第一个字符
    char_from_xl = xl[i % len(xl)]
    if len(char_from_xl) > 1:
        char_from_xl = char_from_xl[0]
    temp = (source[i] ^ i ^ ord(char_from_xl))
    root = libnum.nroot(temp, 2)
    char = chr(root)
    # 打印调试信息
    print(f"source[i]: {source[i]}, i: {i}, xl[i % len(xl)]: {ord(char_from_xl)}, temp: {temp}, root: {root}, char: {char}")
    flag += char

print("Flag:", flag)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值