直接给出源代码
- #include <stdio.h>
- #include <string.h>
-
- int main(){
- char a[]="wwwwwww";
- char b[]="d`vxbQd";
-
- //try to find out the flag
- printf("please input flag:");
- scanf(" %s",&a);
-
- if(strlen(a)!=7){
- printf("NoNoNo\n");
- system("pause");
- return 0;
- }
-
- for(int i=0;i<7;i++){
- a[i]++;
- a[i]=a[i]^2;
- }
-
- if(!strcmp(a,b)){
- printf("good!\n");
- system("pause");
- return 0;
- }
-
- printf("NoNoNo\n");
- system("pause");
- return 0;
- //flag 记得包上 NSSCTF{} 再提交!!!
- }
能发现 关键是比对a,b然后出flag a为我们输入 b为内定的值 所以我们传入的内容需要结果一系列加密 变为 b
我们逆着写算法即可
-
- for(int i=0;i<7;i++){
- a[i]++;
- a[i]=a[i]^2;
- }
-
-
- 逆向就是
-
- python脚本
-
- for i in range(0,7):
- flag += chr((ord(b[i])^2)-1)
- print(flag)
EXP
- a = 'd`vxbQd'
- a = list(a)
- flag=''
- for i in range(0, 7):
- flag += chr((ord(a[i]) ^ 2) - 1)
- print(flag)