签到
emmm,签到。
Snake
一开始以为这题改一改user.xml就行了,然后才发现自己太天真了。
直接解压jar包,审计源码。
在Game.class文件中发现flag输出部分1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22if (this.score >= 500 && this.isshow) {
String flag = "eobdxpmbhf\\jpgYaiibYagkc{";
int key = this.snake.len - this.score;
String xx = "";
int i;
char c;
for(i = 0; i < flag.length() / 2; ++i) {
c = flag.charAt(i);
c = (char)(c ^ key);
xx = xx + c;
}
for(i = flag.length() / 2 + 1; i < flag.length(); ++i) {
c = flag.charAt(i);
c = (char)(c ^ key * 2);
xx = xx + c;
}
JOptionPane.showInputDialog((Component)null, "This is your flag CALCULATE BY YOUR SCORE:\n", "Congratulations", -1, (Icon)null, (Object[])null, xx);
this.isshow = false;
}
一个解密输出flag的过程,我们复现一下就行了。需要改动的代码不多,一个是直接令key=3(因为len永远比score大3),还有一个就是输出。
上payload1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class main{
public static void main(String[] args) {
String flag = "eobdxpmbhf\\jpgYaiibYagkc{";
int key = 3;
String xx = "";
int i;
char c;
for(i = 0; i < flag.length() / 2; ++i) {
c = flag.charAt(i);
c = (char)(c ^ key);
xx = xx + c;
}
for(i = flag.length() / 2 + 1; i < flag.length(); ++i) {
c = flag.charAt(i);
c = (char)(c ^ key * 2);
xx = xx + c;
}
System.out.println(xx);
// JOptionPane.showInputDialog((Component)null, "This is your flag CALCULATE BY YOUR SCORE:\n", "Congratulations", -1, (Icon)null, (Object[])null, xx);
}
}
头像
查看二进制源码,其中有一个flag,将其base64解密为ilovethegirl,然后根据题目要求,将其md5加密得flag。
被截获的电报
用au打开发现音频文件是莫尔斯电码,直接把密文放到解密网站解密就行了。
esaypdf
从来没有做过关于pdf的题目,百度了一下,一种方式是通过weStego自动解密,完蛋,没用。另一种是一篇专利论文,通过pdf最后的偏移量来隐写数据,(我太难了)。
所以我猜想pdf里的照片存在隐写,想提取它(误操作),结果在移动图片时,发现图片下面就是flag!!!
emmm,真easy。
损坏的图片
查看图片,发现文件已损坏,结合题目猜测是缺少文件头,用010editor打开,在末尾发现倒置的png,即GNP‰
,猜(肯)测(定)文件被倒写。
写个脚本逆回来。1
2
3
4
5
6
7
8
9
10
11
12infile = open('1.png', 'rb')
outfile = open('2.png', 'wb')
b = []
i = 0
while True:
t = infile.read(1)
b.append(t)
if not t:
break
b = b[::-1]
for j in b:
outfile.write(j)
输出图片是个二维码,扫描后得flag。
0和1的故事
emmm,这题营养不高。
打开三层压缩包,发现里面有一个txt文件,文件提示flag is not here,有点此地无银三百两的感觉,用010editor打开,发现可视文本后面有由0x09,0x20组成的字符串,该字符串在010中显示为. 组成的字符串,在txt中是不可见的。
由题目提示,将0x20换为0,0x09换为1,由此构成了一个新的数,将其转为十六进制就是flag了。
到这里就有点懵,咋就是答案了,emmm,出题人设计不够巧妙吧。
怀疑人生
首先分析ctf1.zip,用Ziperello字典破解得到密码password
,解压压缩包,得到base64加密字符串,解密后再将其url解码得flag{hacker
。
然后分析ctf2.jpg,用binwalk分析得到有zip隐写,使用foremost分离。得到一个txt文件,文件被okk!加密,逆向解密得到3oD54e
字符串,再用base58解码得misc
。
最后分析ctf3.jpg,一开始还在想怎么切割这个二维码,能让手机识别,结果这个网站直接能识别,得到flag最后一部分12580}
拼凑出来得flag
向日葵
感觉hint有点少。
首先binwalk分析照片,发现有rar压缩隐写,不懂为什么foremost提取不了,直接硬改。
得到txt文件,到这就不大会了,百度了一下wp。
解密方式是波利比奥斯方阵密码的魔改形式
密码表如下
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | a | b | c | d | e |
2 | f | g | h | i | j |
3 | k | l | m | n | o |
4 | p | q | r | s | t |
5 | u | v | w | x | y/z |
对照密码表解密得juijoldugjtfbtz
然后就是让人意想不到的操作,凯撒密码,遍历一遍,发现把所有字母向前挪一个,得flag
进制转换
盲猜四进制,ASCII码对照一下出flag
txt500
直接在文件中搜索key关键词就行了,由于是多文件,所以要通过Linux或者windows下UE搜索。
##