本文主要是介绍[MRCTF2020]千层套路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[MRCTF2020]千层套路
题目地址 : https://buuoj.cn/challenges#[MRCTF2020]%E5%8D%83%E5%B1%82%E5%A5%97%E8%B7%AF
解压压缩包,发现是密码竟然是压缩包名称,再根据题目,tnnd又是套娃题
import zipfilefile_path = input('path : ')#压缩包路径
path = "/Users/mzq/Desktop/ctf/buuctf/misc/[MRCTF2020]千层套路/"
# path = file_path[0:len(file_path)-len(file_path.split('//')[-1])]
print(path)
n = 0
s2 = ""def extract():i = file_path.split('\\')[-1]#递归解压压缩包名称print(i)str1 = ''for x in range(1000):ss = i[:i.find(".")]print(ss)zpf = zipfile.ZipFile( path+ss + ".zip")list = zpf.namelist()#print(list)print(x + 1)for f in list:#print(f)passwd = ss#passwd = f.split('.')[0]#压缩包密码#print(passwd)zpf.extract(f, path, bytes(passwd.encode('utf-8')))if 'zip' in f:print(path, passwd)i = str(f)extract()
最后解出来了一个qr.zip
qr.zip解压后得到qr.txt ,里面都是一些像素值,或者是坐标值
使用脚本拼图
from PIL import Imagefile=open('qr.txt')
MAX=200picture=Image.new("RGB",(MAX,MAX))
for y in range(MAX):for x in range(MAX):string =file.readline()picture.putpixel([x,y],eval(string)) #直接使用eval()可以转为元组
picture.show()
MRCTF{ta01uyout1nreet1n0usandtimes}
这篇关于[MRCTF2020]千层套路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!