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萌新赛-千字文的主要内容,如果未能解决你的问题,请参考以下文章
2021.6.1 NEWSCTF 萌新赛 -- Web --- weblog ---反序列化