Re
Checker
主函数内可见比较函数check_flag
check_flag函数内可见加密函数和密文encrypted_flag
加密逻辑为异或0x23,密文如下
chef一下即可解除
rainbow
在主函数中不难找到hide_flag函数
在该函数中可见加密逻辑为使用xor_encrypt,该函数就是简单异或
使用给的密文即可解出
note
#include <iostream>
#include <vector>
std::vector<uint8_t> decryptflag(const std::vector<uint8_t>& ciphertext) {
uint32_t key = 0x7CA13742;
std::vector<uint8_t> decrypted(ciphertext.size());
for (size_t i = 0; i < ciphertext.size(); ++i) {
decrypted[i] = ((key >> (8 * (i % 4))) & 0xFF) ^ ciphertext[i];
decrypted[i] ^= (i + 1);
}
return decrypted;
}
int main() {
std::vector<uint8_t> ciphertext = {
0x12, 0x7d, 0xe1, 0x2c, 0x01, 0x4a, 0xc4, 0x45, 0x78, 0x5e, 0xc9, 0x46, 0x78, 0x5d, 0x83, 0x0f,
0x37, 0x12, 0xd0, 0x45, 0x63, 0x42, 0xd5, 0x57, 0x76, 0x14, 0xde, 0x06, 0x6e, 0x04, 0x8f, 0x3e,
0x50, 0x21, 0xe1, 0x3b, 0x53, 0x72, 0xb7, 0x6c, 0x5d, 0x79, 0xf7
};
std::vector<uint8_t> decrypted = decryptflag(ciphertext);
std::cout << "Decrypted result: ";
for (uint8_t byte : decrypted) {
std::cout << byte;
}
std::cout << std::endl;
return 0;
}
Misc
请找出拍摄地所在位置
因为图里最明显的俩个商店都是连锁,所以从画面左侧的酒店入手
高德一下即可找到
win3
通过DIE可判断为pyinstaller打包的程序
使用pyinstxtractor解包,找到文件1,补全其魔术字
然后保存为pyc文件,使用pycdc进行反编译
逻辑如下:使用函数encrypt_message进行加密,首先使用ecb模式的aes进行加密,密钥为acf8bafa15f8cb03,进行base64编码后再进行xor加密,密钥为qihangcup,据此逻辑可以写出解密脚本