【BUUCTF】REVERSE-刷题记录-xor
题目信息

解题步骤

MacOS程序
1 | int __fastcall main(int argc, const char **argv, const char **envp) |

关键点
- 输入长度必须是 33 字符。
- 然后进行一个 链式 XOR 变换
1 | for (i = 1; i < 33; ++i) |
这是一种简单的累积加密方式。比如:
s[1] = s[1] ^ s[0]s[2] = s[2] ^ s[1](注意这里的 s[1] 已经被改过了)
所以这个操作是顺序依赖的。
加密后的结果要等于全局变量
global中的内容(33 字节)。
所以下面要看一下global

aFKWOXZUPFVMDGH (地址: 0x100000F6E )

使用Shift + E快速取出数据
根据之前分析的 _main 函数,程序的工作流程是:
- 用户输入33字符的flag
- 对输入进行XOR加密: b[i] ^= b[i - 1] (每个字符与前一个字符异或)
比较加密结果与 _global 指向的数据
解密思路
要找到正确的flag,我们需要反向操作:
从加密数据开始( _global 指向的数据)
- 反向应用XOR操作: decrypted[i] = encrypted[i] ^ decrypted[i-1]
解密脚本
1 | t = [0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, |
flag{QianQiuWanDai_YiTongJiangHu}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 末心的小博客!










