CTFshow萌新赛-千字文

Posted anweilx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTFshow萌新赛-千字文相关的知识,希望对你有一定的参考价值。

打开靶机

技术图片

 

 

 下载完成后,为一张二维码图片

技术图片

 

 

 使用StegSolve 解出隐写图像

技术图片

 

 

保存后使用PS或其他工具去除白边

 然后使用脚本分割这个图像(25*25)

from PIL import Image

im = Image.open(solved.bmp)
id = 0
for i in range(0, 25):
    for j in range(0, 25):
        box = (25 * i, 25 * j, 25 * (i + 1), 25 * (j + 1))
        im.crop(box).resize((500, 500), Image.ANTIALIAS).save(./1/%03d.png % id)
        id += 1

技术图片

 

 

 分割完成后使用pyzbar识别二维码信息,并输出

import pyzbar.pyzbar as pyzbar

for i in range(625):
    # im = Image.open()
    s = ./1/%03d.png % i
    print(pyzbar.decode(Image.open(s))[0].data.decode())

技术图片

 

 成功拿到flag

 

使用后输出很多信息,而且需要两个脚本

我把两个脚本进行了整合

 1 #! /usr/bin/env python3
 2 # _*_  coding:utf-8 _*_
 3 import pyzbar.pyzbar as pyzbar
 4 from PIL import Image
 5 
 6 def main():
 7     fg()
 8     print("图片分割已完成")
 9     dq()
10 
11 def fg():
12     #源文件名
13     im = Image.open(3.png)
14     id = 0
15     for i in range(0, 25):
16         for j in range(0, 25):
17             box = (25 * i, 25 * j, 25 * (i + 1), 25 * (j + 1))
18             #分割后存储路径和文件名
19             im.crop(box).resize((500, 500), Image.ANTIALIAS).save(./1/%03d.png % id)
20             id += 1
21 
22 def dq():
23     for i in range(625):
24         #分割后单个二维码图片路径
25         s = ./1/%03d.png % i
26         str_image = str(pyzbar.decode(Image.open(s))[0].data.decode())
27         if "flag" in str_image:
28             print(str_image)
29 
30 if __name__ == "__main__":
31     main()

运行情况

技术图片

 

以上是关于CTFshow萌新赛-千字文的主要内容,如果未能解决你的问题,请参考以下文章

CTFshow-萌新赛逆向_签退

CTFshow-萌新赛杂项_劝退警告

CQUPT萌新赛题解(附F代码)

2021.6.1 NEWSCTF 萌新赛 -- Web --- weblog ---反序列化

----已搬运----2021.6.1 NEWSCTF 萌新赛 -- Web --- weblog ---反序列化

ctfshow 做题 萌新 模块