图穷匕见、convert、听首音乐、好多数值、很普通的数独(ISCCCTF)
好多压缩包、妹子的陌陌、

图穷匕见

图片下载后,先右键查看属性,有如下发现:


用16进制编辑器(如010editor)打开图片,找到jpg的文件尾FF D9,发现其后还有大量的数据


将之后的数据保存到txt中


将数据按16进制->ASCII方式解码,思路就很明显了,下图中使用的是notepad++中的插件Converter进行解码


解码结果如下,很明显是坐标的形式


这时候再结合会画图吗的提示,将这些坐标做成一张图即可,用gnuplot这个工具比较方便,因此将坐标转为gnuplot能识别的格式 坐标1 坐标2


在Linux中使用
1
2
gunplot
plot "文件名"

得到二维码


扫描后得到flag

convert

进制转换 8位的bit
写个py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import binascii
file1=open('1.txt')
s=file1.read()
file2=open('3.rar','wb')
s1=''

for i in range(0,len(s),8):
#print (type(int(s[i:i+8],2)))
if ((int(s[i:i+8],2))<= 15):
print(hex(int(s[i:i+8],2)))
s1=s1+'0'+hex(int(s[i:i+8],2)).replace('0x','')
print (s1)
else:
s1+=hex(int(s[i:i+8],2)).replace('0x','')

print (s1)
file2.write(binascii.a2b_hex(s1))

打开rar是个图片,用WinHex打开发现base64


解码得到flag

听首音乐

听首音乐放松放松吧~
下载地址:链接: http://pan.baidu.com/s/1gfvezBl 密码: y6gh
下载后试听了下发现只有右声道,用音频软件(GoldWave)打开发现摩斯电码


1
...../-.../-.-./----./..---/...../-..../....-/----./-.-./-.../-----/.----/---../---../..-./...../..---/./-..../.----/--.../-../--.../-----/----./..---/----./.----/----./.----/-.-.

解密后得到flag

好多数值

下载一看是一堆RGB数值,应该是要转成图片
去网上找了下Python RGB转图片的脚本,结果直接搜到原题了。
https://www.cnblogs.com/webFuckeeeer/p/4536776.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from PIL import Image

x = 503 #x坐标 通过对txt里的行数进行整数分解
y = 122 #y坐标 x*y = 行数

im = Image.new("RGB",(x,y))#创建图片
file = open('1.txt') #打开rbg值文件

#通过一个个rgb点生成图片
for i in range(0,x):
for j in range(0,y):
line = file.readline()#获取一行
rgb = line.split(",")#分离rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()

flag{[email protected]’tseeme}

很普通的数独(ISCCCTF)

下载解压后一堆数独图片,把所有带数字的方框改成黑色


应该是是一张二维码,刚好是25张,5X5组合起来。


样子好像有点不对,这里需要把第1张、第5张和第21张互换位置,扫码得到base64值。


Base64多次解码得到flag

好多压缩包

打开一看里面一堆压缩包,都有加密过,这题需要用到CRC碰撞
找了网上大神写的Python2脚本,时间蛮长的。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import zipfile
import string
import binascii


def CrackCrc(crc):
for i in dic:
for j in dic:
for p in dic:
for q in dic:
s = i + j + p + q
if crc == (binascii.crc32(s) & 0xffffffff):
f.write(s)
return

def CrackZip():
for I in range(68):
file = 'out' + str(I) + '.zip'
f = zipfile.ZipFile(file, 'r')
GetCrc = f.getinfo('data.txt')
crc = GetCrc.CRC
CrackCrc(crc)

dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt', 'w')
CrackZip()
f.close()

输出base64值

1
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==

解码后保存文本,用winhex查看


发现存在rar的文件尾C43D7B00400700,但缺少文件头,于是补上rar的文件头526172211A0700


在注释里发现flag


妹子的陌陌

下载是一张小姐姐的图片,先用Winhex打开看看


查找到rar文件头,可以看到下面还有个txt文件,这里直接修改文件后缀名,首先尝试改为rar无法打开,改成zip后即可打开。


然后提示输入密码,题目没有提示要爆破密码,想到之前的图片


momo.txt内容


摩斯电码解出来是个网站地址HTTP://ENCODE.CHAHUO.COM/
接下来是AES解密


网址http://c.bugku.com/momoj2j.png下下来一张黑白颠倒的二维码,解码得到flag


流量分析(cnss)

追踪http流,可以看到有个网址


访问发现用户昵称下有base64


两次解码得到flag,格式cnss{}

猫片(安恒)

原安恒2018年1月月赛题:喵喵喵 扫一扫
hint: LSB BGR NTFS
StegSolve打开,直接翻页是不行的,用Analyse下的Data Extract

保存为新的png文件

保存为新的png文件


删除文件头FFFE,同时将008c改为0118
如图所示

如图所示


QR Research扫码

QR Research扫码


下载是个flag.rar文件,此时用到最后一个提示NTFS
这是一种流隐写,需要用到工具ntfstreamseditor
将文件解压出来,注意必须用winrar解压才行,会有报错提示,没有关系。
用ntfstreamseditor工具扫描文件所在文件夹

用ntfstreamseditor工具扫描文件所在文件夹


得到pyc文件,在线python反编译地址:tool.lu/pyc/
得到脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def encode():
flag = '*************'
ciphertext = []
for i in range(len(flag)):
s = chr(i ^ ord(flag[i]))
if i % 2 == 0:
s = ord(s) + 10
else:
s = ord(s) - 10
ciphertext.append(str(s))

return ciphertext[::-1]

ciphertext = ['96','65','93','123','91','97','22','93','70','102','94','132','46','112','64','97','88','80','82','137','90','109','99','112']

解码脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def decode():
ciphertext = ['96','65','93','123','91','97','22','93','70','102','94','132','46','112','64','97','88','80','82','137','90','109','99','112']
flag = ''
ciphertext.reverse()
for i in range(len(ciphertext)):
if i % 2 == 0:
s = int(ciphertext[i]) - 10
else:
s = int(ciphertext[i]) + 10
s = chr(i ^ s)
flag += s
return flag

a = decode()
print(a)

flag{[email protected]_Cl3veR_C1Ever!}

2B

下载是一张图片,用binwalk分理处一张B2的图片,咋一看两张图完全一样,仔细看发现B2里有条纹状的水印,这是应该一种盲水印
工具下载地址:https://github.com/linyacool/blind-watermark(记得点☆哦)
使用工具需要Python2的opencv库
pip安装:pip install opencv-python
反变换解水印:decode.py --original B2.png --image 2B.png --result extract.png