NewStarCTF2023 Week3 Reverse 花 wp

题目

NewStarCTF2023 Week3 Reverse 花 wp_第1张图片
NewStarCTF2023 Week3 Reverse 花 wp_第2张图片

往下拖,就一个jz和jnz互补跳转的花指令

NewStarCTF2023 Week3 Reverse 花 wp_第3张图片

将E8改为90,修复为代码,再P一下反编译

NewStarCTF2023 Week3 Reverse 花 wp_第4张图片

其实已经出结果了,Str是key,enc里面是密文,用了一个RC4加密。

写EXP:

def rc4_decrypt(ciphertext, key):
    # 初始化 S-box
    S = list(range(256))
    j = 0
    for i in range(256):
        j = (j + S[i] + key[i % len(key)]) % 256
        S[i], S[j] = S[j], S[i]

    # 初始化变量
    i = j = 0
    plaintext = []

    # 解密过程
    for byte in ciphertext:
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        S[i], S[j] = S[j], S[i]
        k = S[(S[i] + S[j]) % 256]
        plaintext.append(byte ^ k)

    return bytes(plaintext)


# 示例用法
encrypted_data = [
  0xF4, 0x87, 0xD4, 0xFA, 0x61, 0xA6, 0x71, 0x12, 0x75, 0x09,
  0xFE, 0xD8, 0xE4, 0x38, 0x97, 0x51, 0xA8, 0xDF, 0x85, 0x65,
  0xC2, 0xB2, 0x15, 0xEF, 0x1F, 0xEC, 0x69, 0xDD, 0x6E, 0xE9,
  0xCF, 0x07, 0xAE, 0xC8, 0x17, 0xF0, 0x65, 0x72, 0xE6, 0x73,
  0xA4, 0x0C, 0x87, 0x64, 0x9E, 0x9E, 0x71, 0x8C, 0x7F, 0xD7,
  0x75, 0x84]  # 替换成你的密文
encryption_key = b'WOWOWOWWOWOWOW'  # 替换成你的密钥

decrypted_data = rc4_decrypt(encrypted_data, encryption_key)
print("Decrypted Data:", decrypted_data.decode('utf-8'))


# Decrypted Data: flag{You!FlowerMaster!YouPassTheThirdPZGALAXYlevel!}

去除花指令也是一样的,E8改为90 (nop)
NewStarCTF2023 Week3 Reverse 花 wp_第5张图片
NewStarCTF2023 Week3 Reverse 花 wp_第6张图片

这是RC4加密的一部分 创建了俩个S盒,还做了swap的操作。

NewStarCTF2023 Week3 Reverse 花 wp_第7张图片

NewStarCTF2023 Week3 Reverse 花 wp_第8张图片

这里就是最终的加密部分了,去除花指令后也可以看到没有魔改的部分。

你可能感兴趣的:(CTF比赛WP,学习,CTF,Reverse)