[MRCTF2020]:千层套路

[MRCTF2020]:千层套路




0.信息分析

在这里插入图片描述

根据图片的线索测试了一下 0573.zip 的密码就是 0573

在这里插入图片描述

结论:

经过测试:0573.zip --> 密码0573,0114.zip --> 密码0114,一直套娃下去。



1.目录结构如下:

[MRCTF2020]千层套路

├─Example.py
├─0573.zip
├─flag
└─zips



2.使用python解决套娃问题

Example.py

import os
import zipfile


zip_name = "0573.zip"
password = "0573"
zips_path = "./zips"
flag_path = "./flag"

while True:
    zip = zipfile.ZipFile(zip_name, "r")
    file_name = zip.namelist()[0]
    suffix_name = zip.namelist()[0].split(".")[1]
    
    if suffix_name == "zip":
        zip.extractall(zips_path, pwd=password.encode())
    else:
        zip.extractall(flag_path)
        exit()
    
    zip_name = os.path.join(zips_path, file_name)
    password = zip.namelist()[0].split(".")[0]



3.执行代码后目录结构如下:


**[MRCTF2020]千层套路**

├─Example.py
├─0573.zip
├─zips (把套娃的压缩包全放这个目录)
─ qr.zip
─ 1000.zip
─ …
─ 0007.zip
├─flag

​ ─ qr.txt(执行脚本后获得的)


qr.txt内容如下:

内容
1(255, 255, 255)
2(255, 255, 255)
40000(255, 255, 255)

如果有一些opencv基础的话很容易知道:

40000个像素点,RGB(红绿蓝)3通道,根据文件名qr,也可以猜到是二维码!



4.绘制二维码


### 0.目录结构如下:

├─Example.py
├─0573.zip
├─flag
├─==opencv-绘制二维码.py==
├─==pil-绘制二维码.py==
└─zips

1.opencv-绘制二维码.py

import cv2
import numpy as np


file = open("./flag/qr.txt", "r").read()
arr = [eval(i) for i in file.splitlines()]
img = np.array(arr, dtype=np.uint8).reshape((200, 200, 3))

cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.pil-绘制二维码.py

import itertools
from PIL import Image


max = 200
file = open("./flag/qr.txt", "r")

img = Image.new("RGB", (max, max))
for y, x in itertools.product(range(max), range(max)):
    pixel = eval(file.readline())
    img.putpixel([x, y], pixel)

img.show()

上面两个代码任意选择一个即可。



5.成功拿到二维码

在这里插入图片描述

扫描二维码,成功拿到flag:

MRCTF{ta01uyout1nreet1n0usandtimes}

改成flag{}这种形式,如下:

flag{ta01uyout1nreet1n0usandtimes}



完结!Github链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>