一.默认已装好IDA,exeinfope,winrar/7-zip
二.开始愉快解题吧:目标找到flag
(1)下载题,解压
(2)将拖入exeinfope中
(3)为64位exe文件,在windows环境下运行
发现输入后回车闪退,故在程序目录下cmd回车进入
随机输入一串字符串,出现关键字符串error
(4)将文件拖入IDAPro(x64)中,按键盘上f5键(有的电脑同时按住f5与fn键)得到对应c语言伪代码。
根据流程初步得到:
byte_14013B000[ ]已知,Str[ ]已知---->v10可求
加密后的v10求解:
双击进入byte_14013B000,shift+e提取数据
因为a^b=c a=b^c
加密后的v9求解:
进入sub_140001120
看到经典RC4加密算法的特征 详见
且因为未用到v10,可初步判断为RC4加密算法中的初始化S盒
v10解密:
双击进入sub_140001240函数
即可判断就是RC4加密,这步为生成密钥流并加密
且题目为crypt本身就是加密意思,暗示题目中出现某种加密算法
使用python库函数
首先
pip install pycryptodome
from Crypto.Cipher import ARC4 # 原始加密数据 c = [0x9E, 0xE7, 0x30, 0x5F, 0xA7, 0x01, 0xA6, 0x53, 0x59, 0x1B, 0x0A, 0x20, 0xF1, 0x73, 0xD1, 0x0E, 0xAB, 0x09, 0x84, 0x0E, 0x8D, 0x2B] # 将 c 数组与 0x22 异或得到 a 数组 a = bytes([byte ^ 0x22 for byte in c]) # RC4 密钥 key = b'12345678abcdefghijklmnopqrspxyz' # 使用 ARC4 解密 cipher = ARC4.new(key) decrypted_data = cipher.decrypt(a) # 输出解密结果 print("Decrypted Data:", decrypted_data)
得到flag{nice_to_meet_you}
如有错误,请大家不吝赐教