分享一道CTF的crypto类型的题——变异凯撒。
介绍:题目本身很简单,看完题目后,略加思考就能得到解题思路,但由于这是笔者在buu上刷题遇上的第一道不能直接利用网络上的在线解密工具就能得到flag的题,以表纪念,分享一下。
题目:凯撒?替换?呵呵!
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
先给出答案:flag{Caesar_variation}
分析:因为题目中提到了凯撒,且猜测前四个字符的原文是flag ,所以我们来尝试倒退一下明文。
第一个密文字符 a ,明文应该是 f ,所以偏移量是- 5 ,
我们带入到第二个密文字符 f 中得到的明文是 k ,不是我们猜想的 l ,字符 l 得到要想得到密文 f ,偏移量应该是 -6 ,同理得后两位的偏移量分别是 -7 和 -8。
所以我们可以大胆判断 M [ i ] = C [ i ] -( k --) ( k = -5 )
得到思路就可以依此来求解了,直接手算就可以得出,但这个工作量还是有点大的,所以我们可以写一段代码来帮助我们解题。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
int tot=-5;
for(int i=0;i<a.length();i++)
{
printf("%c",a[i]-tot);
tot--;
}
return 0;
}