0%

[SWPUCTF 2021 新生赛]re2 JAY687的WriteUp

2024-01-05 11:11By
JAY687
C逆向技术算法分析RC4自定义逻辑

Problem: [SWPUCTF 2021 新生赛]re2

[[toc]]

思路

拖进ida中分析
NSSIMAGE
首先进去看到了类似于flag的字符串str2,然后接下来就是输出函数跟输入函数,v7存的是str的字长用于限制下面for循环的次数,下面for循环的意思是满足条件改变字符串,懂了大概的意思就是str2是被改的字符串,循环的次数就是str2的长度也就是12次。
思路清晰编写exp。
NSSIMAGE
犯的第一个错误就是直接把代码原搬过来,以为按着这个循环if语句判断完输出的数就是正确的flag,但其实是错的。
正确的方法应该是要逆运算式,因为这个flag是已经被打乱的字符串我们要做的是恢复字符串,那就要跟着它相反过来。
所以正确的exp如下:

EXP

*#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
char Str[]="ylqq]aycqyp{";
int l;
l=strlen(Str);
for (int i = 0; i < l; ++i)
{
if ( (Str[i] <= 94 || Str[i] > 96) && (Str[i] <= 62 || Str[i] > 64) )
Str[i] += 2;
else
Str[i] -= 24;
}
printf("%s",Str);

return 0;

}

总结

flag是NSSCTF{nss_c{es{r},但是用这个提交是错误的,可能是作者搞错了之类的,只有把{替换成a才能提交成功也就是NSSCTF{nss_caesar}。

还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有

加载中...

加载失败
广告
×
评论区
添加新评论