Bugku MISC 粉色的猫

前言

近期看到有人CSDN私信我,问我BugkuCTF的一道Misc题,那么今天在这里给大家解答一下这道“粉色的猫”,顺便开始一下我们CTF的旅程。

题目信息

题目名称:粉色的猫

题目作者: 想养一只粉色的猫

描  述: 猫猫不可爱嘛ヾ(≧▽≦*)o

解题过程

下载附件得到一个ZIP,看上去是加密过的,且排除了伪解密

 

压缩包的注释是DNA编码,我们解码一下

 

注意:这里有一个很严重的问题,我们会在文章最后进行说明

我们使用得到的压缩包密码CATISSOCUTE来解压这个ZIP,得到key.txt和1

我们先看key.txt

 

这是PDU编码,我们解密一下(温馨提示:这里一定要一行一行去解)

 

得到包含PNG文件头的一段16进制

89504E470D0A1A0A0000000D494844520000004700000008080200000

参考一下,把下面的几行都解一下,得到

89504E470D0A1A0A0000000D494844520000004700000008080200000024DC75F1000000BC49444154785EDD92411285300843B919F73F159F84FA8712176E745126E3D4A62D7955B388211799BB2EAB95A6B3BBE7B60993EE63F26FDD1BCDAB30331FE5E6D9375B06566A210A3AB71D8E3D72101DB491696801324F8EF284EB35C0FB64EF100A1BA0C20DDEB84A2BD8B58B39EAC6E0AB108D6D6F44CFD81D03B694BC94C2313D4F689916D626A7958F5CD959BE28C443AE76C10588028592961BFCD40D157F1341389CFAB6AE5F2308775E81EB2030C0504751D9FA4EEF22FD007DED5B68A315FD110000000049454E44AE426082

写到文件中

 

对图片用stegsolve进行一下反色操作

这个是piet编码,可以用在线网址进行求解,也可以用npiet求解,这里用在线的

因为该工具使用起来还是得慢慢摸索的,这里就不对原理做过多解释

如果大家感兴趣的话,后续我会专门出一期关于piet编码的文章供大家研究

打开在线网站,点击import导入一下反色后的图片

 

然后点击右边的DEBUGGER,然后点击蓝色按钮

 

等待步入到最后即可得到a=13和b=14,这应该是猫脸变换的参数,但是没什么信息了,突然发现还有一个文件,我们看看它

 

这是一个BPG图像,把它用工具解码一下

 

这里我更加确定是猫脸变换了,百度随便搜了个猫脸变换脚本,改一下ab就行,贴一下:

import matplotlib.pyplot as plt
import cv2
import numpy as np
from PIL import Image

it = cv2.imread('input.png')

def arnold_decode(image, shuffle_times, a, b):
    a=13
    b=14
    # 1:创建新图像
    decode_image = np.zeros(shape=image.shape)
    # 2:计算N
    h, w = image.shape[0], image.shape[1]
    N = h  # 或N=w

    # 3:遍历像素坐标变换
    for time in range(shuffle_times):
        for ori_x in range(h):
            for ori_y in range(w):
                # 按照公式坐标变换
                new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
                new_y = ((-a) * ori_x + ori_y) % N
                decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
    cv2.imwrite('flag.png', decode_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
    return decode_image


arnold_decode(it, 1, 121, 144)

运行之后就得到了flag的图片

 

flag{c159549a-5604-4bb7-8a6e-9db9d8b1426a}

吐槽环节

题目的第一步,也就是DNA编码那步存在很严重的问题,我找到了一篇blog

注意看Update 5中作者提到以上这段话

In constructing the codon-to-english conversion table I had to decide if I wanted to go with the standard coding (e.g. letting GTC which codes for alanine represent A) or make up a random encoding.

我们机翻一下,可以得到如下内容:

在构建密码子到英语的转换表时,我必须决定是否要使用标准编码(例如,让 GTC 的丙氨酸编码代表 A)或组成随机编码。

换句话说,就是该工具中的替换表完全是随机生成的,因此密文本身没有任何的道理可言,唯一解决这道题目的方法就是就去找到作者使用的工具。所以如果用espasy的DNA解码工具是无法正常解开的。看到这里可能大家也不想说什么了,那么我们就保持微笑就好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值