[GUET-CTF2019]虚假的压缩包1附送RSA解密&CRC破解png宽高&异或python脚本

解压得到下图两个zip文件,虚假的压缩包、真实的压缩包

使用010editor打开,发现是伪加密,把09改为00即可打开

打开以后,发现是是一个rsa解密题

上python脚本


import gmpy2

def find_pq(n):
    for p in range(2, int(n**0.5) + 1):
        if n % p == 0:
            q = n // p
            return p, q
    return None

def rsa_decrypt(n, e, c):
    p, q = find_pq(n)
    phi_n = (p - 1) * (q - 1)
    d = gmpy2.invert(e, phi_n)
    m = pow(c, d, n)
    return m

n = 33  # 替换为实际的n值
e = 3 # 替换为实际的e值
c = 26  # 替换为实际的密文c值

plaintext = rsa_decrypt(n, e, c)

print("明文m为:", plaintext)


#请注意,上述代码中的 n、e、c 需要根据实际情况进行替换。

脚本运行结果如下

使用010editor打开真实压缩包发现09出现是偶次,是真加密

使用虚假的压缩包的计算结果5去解压失败,使用 答案是5 解压成功

是一张图片和无后缀名文件

图片拖入010editor

不对,这是没有模板Templates,没有提示不方便,去安装jpg模板,Templates > Template Repository' 

Template Repositoryicon-default.png?t=N7T8https://www.sweetscape.com/010editor/repository/templates/ or Script Repository

安装好了使用jpg模板

不对,仔细看下文件头原来是png。改成png模板

上CRC脚本看看真实高宽,为了方便我把图改名为1.png

import os
import binascii
import struct

crcbp = open("1.png", "rb").read()
for i in range(1024):
    for j in range(1024):
        data = crcbp[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if crc32 == 0x1670bae6:  # 图片特定crc值  1670bae6
            print(i, j)
            print("hex", hex(i), hex(j))

宽0xc6   高0xf2

import os
import binascii
import struct

crcbp = open("1.png", "rb").read()
for i in range(1024):
    for j in range(1024):
        data = crcbp[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if crc32 == 0x1670bae6:  # 图片特定crc值  1670bae6
            print(i, j)
            print("hex", hex(i), hex(j))

B2改F2

^5 异或5最后一个箱子:亦真亦假是一些字符

上异或脚本

记得不能在有中文的路径运行脚本

生成一个data.docx,开始以为是zip

改字体颜色

                                                FLAG{_th2_7ru8_2iP_}改flag{_th2_7ru8_2iP_} 提交

题目地址 https://buuoj.cn/challenges

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值