前言
继续ctf的旅程
攻防世界Reverse高手进阶区的2分题
本篇是EasyRE的writeup
发现攻防世界的题目分数是动态的
就仅以做题时的分数为准了
解题过程
PE查壳
扔进IDA
shift+F12发现第一行有flag
但这个不对
然后看到个right
跟踪
- 判断输入的字符长度为24
- 将字符串逆序
- 将每个字符+1后与6异或
- 与固定字符串比较相等则正确
于是可以得到脚本
data=[ 0x78, 0x49, 0x72, 0x43, 0x6A, 0x7E, 0x3C, 0x72, 0x7C, 0x32, 0x74, 0x57, 0x73, 0x76, 0x33, 0x50, 0x74, 0x49, 0x7F, 0x7A, 0x6E, 0x64, 0x6B, 0x61]
for i in range(24):
data[i]=chr((data[i]^6)-1)
print(''.join(data)[::-1])
得到flag:flag{xNqU4otPq3ys9wkDsN}
结语
一开始没有shift+F12
就饶了好大圈儿