先看一下程序的基本信息
执行一下
提示长度错误
放到ida中看一下,代码很少,就是输入一个字符串加密后和指定字符串进行对比
flag加密后的字符串和长度
根据给出的encode函数进行逆推
解密代码
#include<stdio.h> int main(){ char i; char encode_str[] = "izwhroz\"\"w\"v.K\".Ni"; char flag[18]; for ( i = 0; i < 18; i += 3 ) { flag[i] = (18 ^ encode_str[i]) - 6; flag[i + 1] = (encode_str[i+1] ^ 18) + 6 ; flag[i + 2] = (encode_str[i+2] ^ 18) ^ 6; } puts(flag); return 0; }
编译运行
unctf{b66_6b6_66b}