Problem: [SWPUCTF 2021 新生赛]re1
思路
- 解题大致思路
EXP
- 具体攻击代码
- 用IDA打开,F5查看伪代码
int __fastcall main(int argc, const char **argv, const char **envp) { char Str2[1008]; // [rsp+20h] [rbp-60h] BYREF char Str1[1000]; // [rsp+410h] [rbp+390h] BYREF int i; // [rsp+7FCh] [rbp+77Ch] _main(); strcpy(Str2, "{34sy_r3v3rs3}"); printf("please put your flag:"); scanf("%s", Str1); for ( i = 0; i <= 665; ++i ) { if ( Str1[i] == 101 ) Str1[i] = 51; } for ( i = 0; i <= 665; ++i ) { if ( Str1[i] == 97 ) Str1[i] = 52; } if ( strcmp(Str1, Str2) ) printf("you are wrong,see again!"); else printf("you are right!"); system("pause"); return 0; }
解题脚本:
#include "stdio.h" int main(){ char flag[]="{34sy_r3v3rs3}"; int i=0; for(i=0;i<20;i++){ if(flag[i]==51) flag[i]=101; if(flag[i]==52) flag[i]=97; } printf("%s",flag); } //{easy_reverse}
总结
- 对该题的考点总结
- 最总flag:NSSCTF{easy_reverse}
