CTF writeup:python脚本爆破zip密码

整个过程我先后尝试了python的zipfile,gzip模块,用过linux下的unzip,最后发现得用linux下7z指令才行。现在写下整个过程!

首先拿到zip文件,提示在123456附近,那么提示给这么明显,直接用Python写个脚本就好。

首先用的是os模块,用os.system执行‘winrar e -p 密码 ***.rar’这样的,发现网上写的很好,但是自己用了感觉不行!

遂尝试zipfile模块!自编代码奉上!

import zipfile

flag = 0

def zipbp(zip_file,passwd):
	try:
		zip_file.extractall(pwd = passwd)
		print("[*] success! password is %s"%passwd)
		global flag
		flag = 1
	except:
		print('Sorry, %s failed'%passwd)

def main():
	zip_file = zipfile.ZipFile('droste.zip')
	for i in range(123000,124000):
		passwd = str(i).encode(encoding = 'utf-8')
		zipbp(zip_file,passwd)
		if flag == 1:
			break

if __name__ == '__main__':
	main()

跑起来,有错误!显示这不是一个zip文件!WTF?后缀明明是zip好不好。google得到有人有类似错误,说是zip文件少了某个东西,仿佛尝试,无果。

转而用gzip,可是没有带密码的形式啊!放弃。

那么就用os.system调用Linux下的unzip吧,发现还是不行,依旧显示这不是个zip文件!

BadZipfile: File is not a zip file

真是伤心!

接着,了解到可以用功能更强的7z指令!奉上代码!

import os

for i in range(120000,130000):
	cmd = '7z x -p%d droste.zip'%i
	r = os.system(cmd)
	if r == 0:
		print('[*] success! The key is %d'%i)
		print(r)
		break
	else:
		print('%d is wrong,continuing...'%i)
		print(r)


虽然不知道爆破出来的时候那个循环还在执行,中间123465密码的时候虽然r==512但是跳出来一条询问我是否覆盖文件的语句,猜测123465应该就是,尝试,成功,得到一张图片,难道是隐写?明天我再去鼓捣以下!

#############

继续上次的博文,拿到了密码,发现解压后是一个新的zip和一张droste.jpg的图片,用winhex一看,jpg末尾没问题,题目又给出Hint是ntfs文件流,在网上搜索相关资料:


http://www.cnblogs.com/Chesky/p/ALTERNATE_DATA_STREAMS.html

好了,那么直接对着原来的zip操作,mspaint.exe droste.zip:droste.jpg,竟然提示没有这个图片。没办法,解压一次后得到了一个zip和jpg,对这个zip继续操作

mspaint.exe droste.zip:droste.jpg

得到flag!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值