查个壳:

64位,运行:

进IDA看看:

简单加密函数,不多赘述上脚本就好:
| 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}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?