zip

Zip学习

伪加密

伪加密原理及操作

zip文件组成

可以去里面看看,挺全的

https://blog.csdn.net/qq_26187985/article/details/83654197

例题

这里找了一道大佬出的题,适合练练手

《美丽的烟火》

链接:http://ctf.bugku.com/challenges/detail/id/350.html

直接打开压缩包,可以得到被加密的文件

痛苦,一般这种没有提示的(下面会有介绍),一般就是伪加密了。

拖进winhex,搜索504b0102(不知道为什么的速速去看前面那篇文章),这个按钮

把09改成00,要仔细,这里有两个,我开始只看到一个

重新打开压缩包

心情愉悦~

接下来就是进行解密了

这里不细讲了,不然就跑偏了,png文件是stegpy隐写,密码是shumu,stegpy安装应该会有问题,具体安装请看图片隐写

password解密是base64,base58,栅栏,

这里推荐一篇博客

得到的字符串是aes的key,然后直接aes在线解密

flag:flag{yX73nAutbBozYhge6d2flG}

网站也放这了:https://the-x.cn/cryptography/Aes.aspx

winrar可以修复伪加密,不过是部分的

点开上面的工具-> 修复压缩文件

套娃压缩包

顾名思义,就是压缩包套娃

题目

https://buuoj.cn/challenges#[MRCTF2020]千层套路

脚本

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

x = y = 200
img = Image.new("RGB",(x,y))
file = open('./qr.txt','r')

for width in range(0,x):
for height in range(0,y):
line = file.readline()
rgb = line.replace('(','').replace(')','').split(',')
img.putpixel((width,height),(int(rgb[0]),int(rgb[1]),int(rgb[2])))
img.save('flag.jpg')

CRC32爆破

原理

CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。(这里还不是很懂,后续再看)

总之每个文件都有唯一的CRC32值,即便数据中一个bit发生变化,也会导致CRC32值不同。若是知道一段数据的长度和CRC32值,便可穷举数据,与其CRC32对照,以此达到暴力猜解的目的。但通常只适用于较小文本文件。

解题过程

打开里面有很多压缩包,里面存储的都是小数据文件

直接上脚本(不是很会)

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
28
29
#python3
import zipfile
import string
import binascii

def CrackCrc(crc):
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h
if crc == (binascii.crc32(s.encode())):
f.write(s)
return

def CrackZip():
for i in range(0,68):
file = 'D:\\new\\新建文件夹\\out'+str(i)+'.zip'
crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
CrackCrc(crc)
print('\r'+"loading:{:%}".format(float((i+1)/68)),end='')

dic = string.ascii_letters + string.digits + '+/='
f = open('printaaa.txt','w')
print("\nCRC32begin")
CrackZip()
print("CRC32finished")
f.close()

得到base64编码的东西

1
2
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==

网站在线解码,这个网站挺好的,可以直接转换文件

https://the-x.cn/base64/

解码后在尾部看到这句话

他让我们修复文件,所以我们首先要先了解文件头和尾

https://blog.csdn.net/Ahuuua/article/details/109165473?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.queryctrv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.queryctrv2

修补好rar文件头在注释里得到flag

flag{nev3r_enc0de_t00_sm4ll_fil3_w1th_zip}

压缩文件带注释

有一些题目会在注释里面添加信息,直观的就不说了,现在说两种空白符,Whitespace https://vii5ard.github.io/whitespace/ 和snow隐写,snow需要密码,有可执行文件

题目

https://www.yunyansec.com/#/experiment/expdetail/3

无字天书

解题过程

得到流量包,导出HTTP对象

得到几个文件,依次查看,注意要仔细看,流量包文件有时候会很多

发现了504b0304,可以写脚本,也可以直接网站解码得到压缩包

https://the-x.cn/zh-cn/encodings/Hex.aspx

也可以使用脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
s='填写16进制数据'
import binascii
out=open('2.jpg','wb')
out.write(binascii.unhexlify(s))
out.close()

#Author: MoChu7
import struct

a = open("str.txt","r")#十六进制数据文件
lines = a.read()
res = [lines[i:i+2] for i in range(0,len(lines),2)]

with open("res.jpg","wb") as f:
for i in res:
s = struct.pack('B',int(i,16))
f.write(s)

打开之后得到两个文件,打开里面什么都看不到,全选就会有显示,key.ws应该是snow的密码,拿去whitespace解密

然后snow解密 命令:SNOW.EXE -p 密码 -C 文件

cazy{C4n_y0u_underSt4nd_th3_b0oK_With0ut_Str1ng}

爆破压缩包

使用工具爆破,如Advanced Archive Password Recovery

已知明文攻击

掩码攻击