栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[MRCTF2020]:千层套路

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[MRCTF2020]:千层套路

[MRCTF2020]:千层套路

文章目录
  • [MRCTF2020]:千层套路
  • 0.信息分析
      • 结论:
  • 1.目录结构如下:
  • 2.使用python解决套娃问题
  • 3.执行代码后目录结构如下:
      • **qr.txt内容如下:**
  • 4.绘制二维码
      • 1.opencv-绘制二维码.py
      • 2.pil-绘制二维码.py
  • 5.成功拿到二维码




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链接

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012798.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号