查个壳:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230509122611926-1002699094.png)
64位,运行:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230509122639563-649294992.png)
进IDA看看:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230509122747834-1765581483.png)
简单加密函数,不多赘述上脚本就好:
int main(){
string Des = "ylqq]aycqyp{";
string flag = "";
for (int i = 0; i < Des.size(); i++) {
for (int j = 32; j < 127; j++) {
if ((Des[i] <= 96 || Des[i] > 98) && (Des[i] <= 64 || Des[i] > 66)) {
if (j - 2 == Des[i])flag += j;
} else {
if (j + 24 == Des[i])flag += j;
}
}
}
cout << flag << endl;
return 0;
}
得到一个a{nss_ca{esa{r},看着明显就不对,(不信的话就交一下看),看到每个‘{’前边都有一个a,会不会是多解?(因为我没加break,所以如果多解的话是会出现多一个字符出来)我们把break加上。
int main(){
string Des = "ylqq]aycqyp{";
string flag = "";
for (int i = 0; i < Des.size(); i++) {
for (int j = 32; j < 127; j++) {
if ((j <= 96 || j > 98) && (j <= 64 || j > 66)) {
if (j - 2 == Des[i]){
flag += j;break;
}
} else {
if (j + 24 == Des[i]){
flag += j;break;
}
}
}
}
cout << flag << endl;
return 0;
}
得到anss_caesar},‘{’没得了,还真是多解,根据惯例,{}内是不会出现‘{’,所以我们把第一个‘a’改成‘{’,就可以了。
最后NSSCTF{nss_caesar}