当前位置: 首页 > news >正文

CTF类题目复现总结-[MRCTF2020]ezmisc 1

一、题目地址

https://buuoj.cn/challenges#[MRCTF2020]ezmisc

二、复现步骤

1、下载附件,得到一张图片;
在这里插入图片描述
2、利用010 Editor打开图片,提示CRC值校验错误,flag.png应该是宽和高被修改了,导致flag被隐藏掉;
在这里插入图片描述
如果打开未提示,可能是未安装PNG格式的模板,参考下面文章:

https://blog.csdn.net/weixin_42487326/article/details/146095231

010 Editor破解教程,参考下面文章:

https://blog.csdn.net/weixin_42487326/article/details/146184889

3、利用python脚本爆破图片的正确宽和高;

import os
import binascii
import struct

def get_png_crc(filename):
    """获取PNG图片IHDR块的CRC值"""
    with open(filename, "rb") as f:
        data = f.read()
        ihdr_start = data.index(b'IHDR')  # 找到IHDR块
        crc_bytes = data[ihdr_start + 17: ihdr_start + 21]  # CRC是IHDR后17-20字节
        return int.from_bytes(crc_bytes, byteorder='big')

def brute_force_png_dimensions(filename, target_crc=None):
    """暴力破解PNG图片的正确尺寸"""
    crcbp = open(filename, "rb").read()
    
    # 如果没有提供目标CRC,则自动从文件中提取
    if target_crc is None:
        target_crc = get_png_crc(filename)
    
    print(f"目标CRC值: 0x{target_crc:08X}")
    print("开始暴力破解...")
    
    for i in range(2000):
        for j in range(2000):
            # 构造IHDR块数据(不包括长度字段)
            data = crcbp[12:16] + \
                   struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
            crc32 = binascii.crc32(data) & 0xffffffff
            
            if crc32 == target_crc:
                print(f"找到匹配的尺寸: 宽度={i}, 高度={j}")
                print(f"十六进制: 宽度=0x{i:X}, 高度=0x{j:X}")
                return (i, j)
    
    print("在指定范围内未找到匹配的尺寸")
    return None

# 使用示例
if __name__ == "__main__":
    png_file = "flag.png"
    
    # 自动获取CRC并开始破解
    brute_force_png_dimensions(png_file)

在这里插入图片描述

个人总结CTF相关工具:https://github.com/huan-cdm/ctf_tools/

4、010 Editor打开flag.png文件,修改宽和高;

宽度:第19个字节开始
高度:第23个字节开始

在这里插入图片描述
宽度修改为:01F4
高度修改为:01C8
在这里插入图片描述
保存,得到flag
在这里插入图片描述

flag{1ts_vEryyyyyy_ez!}

在这里插入图片描述

相关文章:

  • 交流电机类型及其控制技术
  • 淘宝商品数据清洗实战:从复杂JSON到结构化数据库(附Python脚本)
  • LeeCode 434. 字符串中的单词数
  • Spring Initializr搭建spring boot项目
  • 软件工程面试题(七)
  • 格雷码和汉明码的详细总结
  • Linux中安装宝塔面板
  • vcruntime140.dll丢失导致程序无法运行?八种vcruntime140高效修复方案详解
  • 记录一次交易耗时有毛刺TDSQL数据库排查过程
  • 生物化学笔记:医学免疫学原理08 细胞因子+细胞因子的种类+细胞因子与疾病
  • 【网络】Socket套接字
  • 地图项目入手学习
  • SQL 复杂查询和性能优化
  • 2025美国网络专线国内服务商推荐
  • Unity中实现UI的质感和圆角
  • 实战经验深度解析 | 博睿数据制造行业精选案例集发布!
  • 项目管理证书 PMP 的含金量高吗?
  • SAIL-RK3588J 核心板技术方案——高精度装配式建筑机器人控制‌
  • 看懂roslunch输出
  • PyQt QDoubleSpinBox控件用法详解
  • 南开做网站/百度一下主页官网
  • 网站建站代码/电商关键词工具
  • 广州住建局官网/搜索引擎优化分析
  • 一个大型的网站建设/廊坊自动seo
  • 广西网红排名第一是谁/seo优化效果怎么样
  • 北京建设工程交易信息网站/搭建一个app平台需要多少钱