前言
知识点
C
ida初步运用
字符替换
题目
下载题目附件得到exe程序,拖入ida并f5查看
Str
为我们输入的参数,输入后进入for循环中的字符替换
Str2
是我们要进行比较的字符串,为ylqq]aycqyp{
思路
操作
思路很明显,对for循环中的语句进行逆向将Str2
传入即可得到flag
(记得把if条件中的语句也逆向了)
直接编写C脚本
#include <stdio.h>
#include <string.h>
int main()
{
char Str[] = {"ylqq]aycqyp{"};
int v7 = strlen(Str);
for (int i = 0; i < v7; ++i)
{
if ((Str[i] > 96 || Str[i] <= 98) && (Str[i] > 64 || Str[i] <= 66))
Str[i] += 2;
else
Str[i] -= 24;
}
printf(Str);
return 0;
}
//{nss_c{es{r}
但是提交时需要将里面的{
改为a
(怪
这里再附上大佬的python脚本
enc = "ylqq]aycqyp{"
flag = ""
for i in enc:
if (ord(i) <= 94 or ord(i) > 96) and (ord(i) <= 62 or ord(i) > 64):
flag+=chr(ord(i)+2)
else:
flag+=chr(ord(i)-24)
print(flag)
#{nss_c{es{r}
总结
一道入门级的字符替换题