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}

posted @ 2021-02-21 14:35  KaguyaSaikou  阅读(199)  评论(0)    收藏  举报