目录

  1. 1. 前言
  2. 2. 知识点
  3. 3. 题目
  4. 4. 思路
    1. 4.1. 操作
  5. 5. 总结

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

RE初探索0x05

2023/4/8 Reverse
  |     |   总文章阅读量:

前言

NSS上的[SWPUCTF 2021 新生赛]re2

知识点

C

ida初步运用

字符替换

题目

下载题目附件得到exe程序,拖入ida并f5查看

屏幕截图 2023-04-08 101249

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}

屏幕截图 2023-04-08 102216

但是提交时需要将里面的{改为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}

总结

一道入门级的字符替换题