Bugku MISC做题笔记

简单套娃DX

这一题需要对png图片的结构有所了解。详细可参考https://www.w3.org/TR/png/

幸好每一张图片只有一个错误,逐步调试,就可以发现所有错误,修正即可。具体错误参看python程序中的注释:

import  ossrc_dir = '.\\XD\\'
des_dir = '.\\out\\'
src_files = os.listdir(src_dir)
des_files = os.listdir(des_dir)f_count={0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0}
for fname in src_files:if fname in des_files:continuewith open(src_dir+fname,'rb') as f:srcdata = f.read()#丢掉了文件头标识if srcdata[1:4] != b'PNG':desdata = 0x89504E470D0A1A0A.to_bytes(8,'big') + srcdataf_count[1] += 1#IHDR块长度和标识码被清零elif srcdata[8:0x10] == 0x0000000000000000.to_bytes(8, 'big'):  desdata = srcdata[:8] + 0x0000000D49484452.to_bytes(8,'big') + srcdata[16:]f_count[2] += 1#IHDR宽高值不对elif srcdata[0xc:0x10] == b'IHDR' and srcdata[0x10:0x18] != 0x0000000500000005.to_bytes(8,'big'):  desdata = srcdata[:0x10] +0x5.to_bytes(4,'big') + 0x5.to_bytes(4,'big') + srcdata[0x18:]f_count[3] += 1#IDAT块长度被清零elif srcdata[0x21:0x29] == 0x00000000.to_bytes(4, 'big')+b'IDAT':  if srcdata.index(b'eXIf') >= 0:IDAT_len = srcdata.index(b'eXIf') - 0x29 - 4 -4else:print('[!] Error!! %s'%fname)breakdesdata = srcdata[:0x21] + IDAT_len.to_bytes(4,'big') + srcdata[0x25:]f_count[4] += 1#IDAT块标识被删除elif srcdata[0xc:0x10] == b'IHDR' and srcdata[0x25:0x29] != b'IDAT':  desdata = srcdata[:0x25] + b'IDAT' + srcdata[0x25:]f_count[5] += 1#IHDR头的颜色类型错误elif srcdata[0xC:0x10] == b'IHDR' and srcdata[0x18:0x1A] != 0x0100.to_bytes(2,'big'): desdata = srcdata[:0x18] + 0x0100.to_bytes(2,'big') + srcdata[0x1A:]f_count[6] += 1#IHDR块被放到了倒数第二块,IDAT变为第一块elif srcdata[0xc:0x10] == b'IDAT':  IHDR_block_begin = srcdata.index(b'IHDR') - 4 IHDR_block = srcdata[IHDR_block_begin:IHDR_block_begin+25]desdata = srcdata[:8] + IHDR_block + srcdata[8:IHDR_block_begin] + srcdata[IHDR_block_begin+25:]f_count[7] += 1else:desdata = srcdataf_count[0] += 1with open(des_dir+fname,'wb') as f:f.write(desdata)
print(f_count)

图片修正以后,观察图片内容,应该是二维码碎片。查看每个图片的exif信息,发现数据:

import os
from PIL import Imagebasedir = '.\\out\\'
list = []
for fname in os.listdir(basedir):image = Image.open(basedir+fname)exif = image.getexif()list.append([ int(exif[282]),int(exif[283]) ])image.close()
list.sort(key=lambda x: [x[0], x[1]])
print(list)#[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], 
#...
# [449, 0], [449, 1], [449, 2], [449, 3], [449, 4], [449, 5], [449, 6], [449, 7], [449, 8], [449, 9], [449, 10], [449, 11], [449, 12], [449, 13], [449, 14], [449, 15], [449, 16], [449, 17], [449, 18], [449, 19]]

因此这些应该是每个图片的坐标,依据这些坐标进行拼接图片,得到flag:

import os
from PIL import Image
basedir = '.\\out\\'
list = []
newimg = Image.new('RGB',(450*5,20*5),(255,255,255)) #白底
for fname in os.listdir(basedir):image = Image.open(basedir+fname)exif = image.getexif()x,y = int(exif[282])*5,int(exif[283])*5newimg.paste(image,(x,y,x+5,y+5))   image.close()
newimg.save('new.png')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信每天通过好友上限是多少个呢?

微信每天通过好友上限是多少个呢? 1、新号和不活跃的号 微信新号是指注册不满15十五天,或者注册超过15天,但是没有好好养号的的账号。(包括很多长期不活跃的账号,突然使用的情况) 2、正常帐号 &#xf…

案例分析篇06:数据库设计相关28个考点(17~22)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Scala--01--简介、环境搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. Scala简介1.1 Scala是什么?官网: [https://scala-lang.org/](https://scala-lang.org/)官方文档: [https://docs.scala-lang.…

基于springboot+vue实现的大学计算机课程管理平台的设计与实现(全套资料)

一、系统架构 前端:vue | antv 后端:springboot | mybatis-plus 环境:jdk17 | mysql | maven | node | redis 二、代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 系统基础模块-用户管理 04. 系统基础模块-部门…

一个人做电商要怎么做?满足这三个条件,你也可以!

我是电商珠珠 现在电商平台很火,特别是短视频电商,很多从来没有接触过的新手会觉得自己一个人做不了,或者说投入成本大,会有很多人工费用,还要找货源找场地等。 其实,对于传统的电商来说,这些…

记一次Spring事务失效的发现与解决过程

一、事情起因是这样的 首先,我们是使用Spring mybatis 进行开发。 某功能在测试环境看到报错日志, 但是数据库里面的数据发生了变化,没有回滚。 执行数据库update 操作的方法上明确有 Transactional(rollbackFor Exception.class)的注解。…

蓝桥杯单片机快速开发笔记——HC573/HC138

一、原理分析 二、思维导图 三、代码参考 #include "HC573.h" #include "reg52.h"void Set_HC573(unsigned char channel, unsigned char dat) {P2 (P2 & 0x1f) | 0x00; //赋值之前,关闭全部锁存器P0 dat; //保存待设置…

阿里云和腾讯云2核4G服务器租用价格对比,选哪个好?

租用2核4G服务器费用多少?2核4G云服务器多少钱一年?1个月费用多少?阿里云2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年;腾讯云轻量2核4G服务器5M带宽165元一年、252元15个月、540元三…

长期护理保险可改善老年人心理健康 | CHARLS CLHLS CFPS 公共数据库周报(3.6)...

欢迎报名2024年“真实世界临床研究”课程! 本周郑老师开讲:“真实世界临床研究”培训班,3月16-17日两天,欢迎报名! CHARLS公共数据库‍ CHARLS数据库简介中国健康与养老追踪调查(China Health and Retirement Longitud…

多模态特征融合新突破!5大方法刷新顶会SOTA!

多模态融合可以应用于情感分析、身份验证、行为识别等多个领域,实现更精确的预测和判断。这其中,特征融合是多模态数据处理的核心环节,它不仅能够提高模型的性能,还能够增强数据的表达力,让模型能够更好地理解和处理现…

案例分析篇05:数据库设计相关28个考点(9~16)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

白嫖AWS云服务器,验证、注册指南

背景 不知道你想不想拥有一台属于自己的云服务器呢,拥有一台自己的云服务器可以建站,可以在上面搭建个人博客,今天我就来教大家如何申请亚马逊 AWS 免费云服务器,这个云服务器可以长达12个月的免费。而且到期后可以继续换个账号继…

测试人员业务提升的几个方面

📋 个人简介 作者简介:大家好,我是凝小飞,软件测试领域作者支持我:点赞👍收藏⭐️留言📝 整个文章来源于我的xmind梳理和总结,接下来为各位一步步拆解。 一、测试流程遵守和推进 在…

离线安装数据库 mysql 5.7 linux

离线安装数据库 mysql 5.7 linux 方法一 参考链接Linux(Debian10.2)安装MySQL5.7.24环境 赋予文件执行权限chmod x 文件名 使用root用户sudo su解压文件tar xvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz重命名mv mysql-5.7.42-linux-glibc2.12-x86_64 mysql将桌面的mys…

使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码

请直接看原文: 使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码_urldecoder.decode-CSDN博客 ------------------------------------------------------------------------------------------------------------------------------- 摘要: URLDecoder 和…

plotnine,一个非常实用的 Python 库!

大家好,今天为大家分享一个非常实用的 Python 库 - plotnine。 Github地址:https://github.com/has2k1/plotnine 在数据分析和可视化领域,Python 提供了许多强大的工具和库。其中,plotnine 是一个基于 Grammar of Graphics 理论的…

短剧在线搜索源码

一个非常哇塞的在线短剧搜索页面,接口已经对接好了,上传源码到服务器解压就能直接用,有能力的可以自己改接口自己写自己的接口 接口文档地址:doc.djcat.sbs 源码免费下载地址抄笔记

YOLOv8_pose-Openvino和ONNXRuntime推理【CPU】

纯检测系列: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列: YOLOv5/6/7-O…

rtsp流实现web端实时播放(海康+大华)

最近的电力项目需要嵌入海康摄像头画面,之前没有做过类似的流媒体播放,所以有些懵; 海康开放平台的webAPI,有插件还是无插件,都不适合自研web系统的嵌入,所以需要自己进行解流; 首先&#xff0c…

企业即时通讯工具,企业内部即时通讯系统推荐

企业需要私有化即时通讯系统主要出于以下几个方面的考虑, 数据安全和隐私保护:在企业日常办公中,涉及到大量的敏感信息和机密数据,这些信息如果通过公共即时通讯工具传输,存在被窃取或泄露的风险。通过私有化即时通讯…