XCTF-666 writrup
拿到文件 ExEinfoPE看一下

64位的ELF文件
拖入IDA,查看主函数

显然
不是flag(要是有这么简单的题目就好了)
可以看到v5是我们输入的内容,v5的长度要等于key,s要和enflag相等

点进去可以看到key的值是18
enflag的值是"izwhroz""w"v.K".Ni"
查看encode函数

a1即是v5,a2是s的首地址
这里对a1进行了处理得到a2
所以我们可以写逆过程的代码
#include <iostream> using namespace std; int main() { char str="izwhroz\"\"w\"v.K\".Ni"; for(int i=0;i<18;i+=3) { cout<< (str[i]^18)-6; cout<< (str[i+1]^18)+6; cout<< str[i+2]^18^6; } return 0; }
运行得到flag:unctf{b66_6b6_66b}

浙公网安备 33010602011771号