https://buuoj.cn/challenges#[2019%E7%BA%A2%E5%B8%BD%E6%9D%AF]xx
64 C++ PE
检测字符串输入 19
qwertyuiopasdfghjklzxcvbnm1234567890
取出来前面 4 个字符和一个 0,验证(“flag”)是否是小写字母或数字(鉴定为勾石 CPP)
这个该怎么动调啊,怎么输入不了东西。有点难搞
一直到 112 行才是开始主要逻辑的地方,前面比赛的时候大可不必分析,主要是对输入合法性进行验证和初始化
findCrypt 识别出是 Tea加密
v30 = 52 / (unsigned int)v12 + 6;
可以看出来是 XXtea(名字也能看出来啦)
xxTea 之后是对整体一个移位,然后有一个诡异的异或,最后和明文比较(IDA 又识别错数组了)
先逆向异或,把 v20 解出来
0xbc 0xa5 0xce 0x40 0xf4 0xb2 0xb2 0xe7 0xa9 0x12 0x9d 0x12 0xae 0x10 0xc8 0x5b 0x3d 0xd7 0x6 0x1d 0xdc 0x70 0xf8 0xdc
用 xxtea 解密解出来
flag{CXX_and_++tea}