套路"/>
[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 zipfilezip_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 npfile = 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 Imagemax = 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链接
更多推荐
[MRCTF2020]:千层套路
发布评论