1.签到题
扫描二维码得到
ZCTF{WELCOME_TO_20-209}
2.阿斯克的秘密
从前有个叫做阿斯克的人,他写了一句话,聪明的你能明白他写的是什么吗?
int a; while(scanf("%d",&a)!=EOF) printf("%c",(char)a);
将里面的数字输入到程序中即可;
3.送小可爱啦!!!
做出这一题的送小可爱一只
用UE打开——搜索“flag”
得到flag {wo_shi_xiao_ke_ai}
4。困在栅栏里的人是谁
下载图片后改扩展名为rar
打开压缩包发现有一个文件
文件里是 4c665f78647770685f21
这是16进制的。我猜答案肯定是字符串的所以转字符串;
根据题目和图片得到线索:栅栏(密码) & 凯撒(密码)
所以把16进制分栏,发现分栏后转不成字符串
那么先转字符串再分栏
分栏后把得到的字符串进行凯撒解密
代码如下:
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main() { char c[]={"l_dp_fxwh!"} ;
int l=strlen(c); for (int i = 1; i < 26; i++) { for (int j = 0; j < l; j++) { if (c[j] + i > 'z'&&c[j] >= 'a'&&c[j] <= 'z') { printf("%c", c[j] + i - 26); } else if (c[j] >= 'a'&&c[j] <= 'z') printf("%c", c[j] + i); else printf("%c", c[j]); } printf(" "); } }
一个一个试,把得到的字符串放程序里跑一遍;
(这个程序只能转小写的,所以里面有个大写字母要改成小写的,最后再改成大写)
发现在5的时候
有个I_am_cute!
别的都不是正常英文;
那就是这个了~
具体操作:
转字符串;
分栏1,2,3.... <-----
程序里跑一遍 |
发现不行,分栏++--------
发现可以,get答案
5.土豪聪
hc有很多txt,每个txt里面都有一笔十分宝贵的财富(也就是一个三位数而已),它们的财富值计算公式如下 value=filename^content 其中^表示乘方,比如5^4=5*5*5*5=625,可是钱多也很苦恼,hc连自己有多少财富值都不知道了, 聪明的你能帮hc算算他有多少财富值吗? 由于数据比较大,请将结果对9973求余
解压后发现有100个txt,每个txt里有一个三位数字;
把这些txt合并到一个里,(百度方法)用cmd命令;
把所有txt输入到111.txt(因为111.txt也在这个范围里,所以合并完这个111.txt也把自己复制了一次)
得到的是没换行的!没关系~
写个程序辣~
#include<iostream> #include<stdio.h> #include<fstream> #include<string> #define mod 9973 using namespace std; int pow4(int a, int b) //快速幂,百度有模板 { int r = 1, base = a; while (b) { if (b & 1) { r *= base; r = r%mod; } base *= base; base %= mod; b >>= 1; } return r; } int main() { ifstream cin("111.txt"); //c++输入流重定向,从文件111.txt输入 string s; cin >> s; //输入字符串; int t, sum; sum = 0; int num = 0; for (int i = 0; i < s.size(); ) { int a = 0; for (t = 0; t < 3; t++) //每三个是一个数 { a = a * 10 + s[i] - '0'; i++; } num++; sum += pow4(num, a);//快速幂 sum %= mod; } cout << sum << endl; }
然后结果
6。移位密码
明文是小写的
把大括号里的东西换成小写,写个程序辣~
#include<iostream> #include<stdio.h> #include<string.h> #include<fstream> using namespace std; int main() { char c[] = { "qduqiogkuijyed" }; int l = strlen(c); for (int i = 1; i < 26; i++) { for (int j = 0; j <l; j++) { if (c[j] + i > 'z') { printf("%c", c[j] + i - 26); } else printf("%c", c[j]+i); } printf(" "); } }
结果里有一个“aneasyquestion”
这就答案!
7.py交易
用py2.7运行一下发现是个死循环
在线反编译py
把除了循环的代码复制到py控制台里运行
得到
答案就是 pyisinteresting
8.简单逆向
用OD打开
自动步入,就看到了;
也可以直接搜索参考字符串“flag”
9.心急吃不了热豆腐
F12 直接找js文件;
发现里面有一个控制时间的变量,有个输出被注释掉了,把注释去掉,时间改小,再开html如图
10.不存在的
UE打开搜flag,嘻嘻。
安装apk??不存在的