2021年线下“领航杯” MISC-《shizhenle》解题WP


一、前言

- 首先还得感谢套神的帮助,我太菜了,有想要复现这题的文章末尾有题目分析链接

二、解题步骤

1、打开压缩包发现里面只有一张图片,一张奇怪的png图片

2.一般情况下kali三部曲,没发现啥就放入010Editor看,这题也不例外先放kali里binwalk一下

请添加图片描述发现有东西,foremost一波带走拿到有用的东西

请添加图片描述打开这个zip文件夹发现存在加密文件,用360压缩打开,发现还是有密码直接排除伪加密

3.那接下来的思路只能换010Editor看细节了,这里考虑到图片是PNG,可能有修改高度的问题。
用到一个工具脚本

import zlib
import struct

# 同时爆破宽度和高度
filename = 'C:/Users/Administrator/Desktop/shizhenle.png'
with open(filename, 'rb') as f:
    all_b = f.read()
    crc32key = int(all_b[29:33].hex(), 16)
    data = bytearray(all_b[12:29])
    n = 4095
    for w in range(n):
        width = bytearray(struct.pack('>i', w))
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x+4] = width[x]
                data[x+8] = height[x]
            crc32result = zlib.crc32(data)
            if crc32result == crc32key:
                print("宽为:", end = '')
                print(width, end = ' ')
                print(int.from_bytes(width, byteorder='big'))
                print("高为:", end = '')
                print(height, end = ' ')
                print(int.from_bytes(height, byteorder='big'))
                #后面输出用十进制转十六进制

请添加图片描述得到正确的宽为 1440 正确的高为1080,果然有修改,这边将03D4改为0438,拿到压缩包解密密码:

请添加图片描述
4.用密码打开压缩包得到加密脚本

请添加图片描述
从加密脚本倒数的倒数几行可以看出flag写入的位置,在ord(flag[z])+p1处当作像素r写入图片,这里我们的思路便是找到p1然后读取现在的图片中的像素r去一一减去p1再转码便能得到结果。

找p1有两种方法:
1、确定加密点直接用PS看加密处的像素(猜测在底部)底部应为黑色像素块,理因像素为(0,0,0),而以为p1,p2,p3的存在导致现在这般颜色
2、进行爆破p1的值

这里先用第一种方法,先用PS查看像素颜色得到R = 30、 G = 28、 B=8 则P1 = 30 、P2 = 28、P3 = 8
请添加图片描述这样便可以根据原脚本进行改写,便得到了flag,主要便是确定p1的值,将最后的flag爆出来

第二种直接穷举p1得到flag


链接:https://pan.baidu.com/s/1V5UqvsJFQwdTjuMGr6bXWg
提取码:ndat


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值