Misc | 相当于签到 第二届“奇安信”杯网络安全技能竞赛

news/2024/5/20 0:36:42 标签: web安全, 安全, MISC, 网络安全, 笔记, CTF, 奇安信

在这里插入图片描述

题目描述:
图片似乎经过了什么处理,你能否将其复原呢?
密文:
下载附件,解压得到一张.jpg图片。
在这里插入图片描述


解题思路:
1、一张图片,典型的图片隐写。放到Kali中,使用binwalk检测,确认图片中隐藏zip压缩包。
在这里插入图片描述
使用foremost分离图片中的压缩包,在output目录中找到隐藏的zip压缩包。
在这里插入图片描述
在这里插入图片描述

2、尝试解压得到的压缩包,需要密码。
在这里插入图片描述
因为没有关于密码的提示,尝试用4位纯数字进行爆破,出现提示“no usable files found”(未找到可用文件)。
在这里插入图片描述
zip伪加密原理
猜测该zip压缩包为伪加密,通过010 Editor修改压缩源文件数据区和目录区的全局方式位标记(下图红色标识),将伪压缩文件恢复到未加密的状态。
在这里插入图片描述
在这里插入图片描述

未加密:

文件头中的全局方式位标记为00 00

目录中源文件的全局方式位标记为00 00

伪加密:

文件头中的全局方式位标记为00 00

目录中源文件的全局方式位标记为09 00

真加密:

文件头中的全局方式位标记为09 00

目录中源文件的全局方式位标记为09 00

ps:也不一定要09 00或00 00,只要是奇数都视为加密,而偶数则视为未加密

3、修改后,解压压缩包不需要密码,解压成功,得到一张.png图片。
在这里插入图片描述
从这里也可以看出图片经过修改,无法正常显示。在010 Editor中打开,提示CRC校验错误,结合题目提示“图片似乎经过了什么处理”,认为图片被修改了宽高。
在这里插入图片描述
通过爆破宽高,得到正确的宽高,然后修改图片的宽高数据,得到正确的图片。爆破所用代码如下。

import os
import binascii
import struct

crcbp = open("repair.png", "rb").read()    #打开图片(修改图片路径)
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + \
            struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0x9BF1293B):    #图片当前CRC(修改CRC)
            print(i, j)
            print('hex:', hex(i), hex(j))

得到正确的宽高值。
在这里插入图片描述
修改图片中的宽高参数,然后保存图片查看。
在这里插入图片描述
获得flag。
在这里插入图片描述

flag:

flag{bdbace45-506b-f530-aa4d-57884b2025e}(”-“可能为“_“)

http://www.niftyadmin.cn/n/5175248.html

相关文章

Linux yum,vim详解

yum是什么 yum是一个Linux系统预装的指令,yum的功能是可以对app进行搜索,下载,相当于Linux下的应用商店。 yum是读取Linux中镜像文件中的网页地址,下载用户所输入的命令。 如何使用yum下载软件 yum install -y(所有选项都yes) …

pyTorch Hub 系列#4:PGAN — GAN 模型

一、主题描述 2014 年生成对抗网络的诞生及其对任意数据分布进行有效建模的能力席卷了计算机视觉界。两人范例的简单性和推理时令人惊讶的快速样本生成是使 GAN 成为现实世界中实际应用的理想选择的两个主要因素。 然而,在它们出现后的很长一段时间内,GA…

海康Visionmaster-Qt+VS 二次开发环境如何配置?

1 新建 Qt 工程,添加 Qt 模块 Core、GUI、Active Qt 和 Container Widgets 2 拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0\ComControl\bin\x64 下的所有拷贝到项目工程输出目录下,如下图所示,项目的输出路径是 Dll 文件夹。 3 第一…

从0到0.01入门React | 009.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

java Stream编程笔记

文章目录 Stream介绍什么是 Stream? Stream中间操作过滤操作(filter)映射操作(map)排序操作(sorted)截断操作(limit 和 skip) Stream 的终止操作forEach 和 peek聚合操作…

c语言-数据结构-栈和队列的实现和解析

目录 一、栈 1、栈的概念 1.2 栈的结构 2、栈的创建及初始化 3、压栈操作 4、出栈操作 5、显示栈顶元素 6、显示栈空间内元素的总个数 7、释放栈空间 8、测试栈 二、队列 1、队列的概念 1.2 队列的结构 2、队列的创建及初始化 3、入队 4、出队 5、显示队头、队…

Flutter开发中的一些Tips(四)

最近接手了一个flutter项目,整体感觉代码质量不高,感觉有些是初学者容易犯的问题。几年前写的前三篇,我是站在我自己开发遇到问题的角度,这篇是站在别人遇到问题的角度,算是一种补充。下面我整理一下遇到的小问题&…

Vue3中的pinia使用(收藏版)

1.pinia介绍 💂 个人网站:【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】 pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。就是和vuex一样的实现数据共享。 依据Pinia官方文档&am…