粉色的猫MISC(bugku)
一 题目描述
ps:本题特别感谢树叶大佬给的一些提示以及WP!欢迎大家关注树木有点绿~~
二 解题过程
下载附件得到zip压缩包
根据作者提示,压缩包注释应该为压缩包密码。
1.压缩包密码
一开始看到这个就想到应该是什么DNA相关解密,但未搜索到相关解码(搜索关键字真的很重要呜呜呜~),后来在GitHub等搜索到两个解码脚本,本质就是一组碱基对会对应一个字母。
但杯具的是解出来的一直不对!好了,直接上真正的解密方法:在线解密网址 https://earthsciweb.org/js/bio/dna-writer/
password
CATISSOCUTE
2.分析文件
(1)文件1
使用file命令或者在winhex等十六进制文本编辑器中可以发现是 BPG格式
修改后缀得到一个1.bpg
下载BPGView查看
一脸茫然~~~
经过大佬指点是 猫脸变换
简单了解后我们解密该图片是需要知道变换的一个系数a b,于是查看key.txt文件
(2)key.txt
0001000D91683106019196F4000872003800390035003000340045003400370030004400300041003100410030004100300030003000300030003000300044003400390034003800340034003500320030003000300030003000300034003700300030003000300030003000300038003000380030003200300030003000300030
0001000D91683106019196F4000872003000320034004400430037003500460031003000300030003000300030004200430034003900340034003400310035003400370038003500450044004400390032003400310031003200380035003300300030003800340033004200390031003900460037003300460031003500390046
0001000D91683106019196F400087000380034004600410038003700310032003100370036004500370034003500310032003600450033004400340041003600320044003700390035003500420033003800380032003100310037003900390042004200320045004100420039003500410036004200330042004200450037
0001000D91683106019196F400086E0042003600300039003900330045004500360033004600320036004600440044003100420043004400410042003300300033003300310046004500350045003600440039003300370035004200300036003500360036004100320031003000410033004100420037003100440038
0001000D91683106019196F400087000450033004400370032003100300031004400420034003900310036003900360038003000310033003200340046003800450046003200380034004500420033003500430030004600420036003400450046003100300030004100310042004100300043003200300044004400450042
0001000D91683106019196F400086E0038003400410032004200440038004200350038004200330039004500410043003600450030004100420031003000380044003600440036004600340034004300460044003800310044003000330042003600390034004200430039003400430032003300310033004400340046
0001000D91683106019196F400087000360038003900390031003600440036003200360041003700390035003800460035004300440039003500390042004500320038004300340034003300410045003700360043003100300035003800380030003200380035003900320039003600310042004600430044003400300044
0001000D91683106019196F4000872003100350037004600310033003400310033003800390043004600410042003600410045003500460032003300300038003700370035004500380031004500420032003000330030004300300035003000340037003500310044003900460041003400450045004600320032004600440030
0001000D91683106019196F400085200300037004400450044003500420036003800410033003100350046004400310031003000300030003000300030003000300034003900340035003400450034003400410045003400320036003000380032
第一眼看到又是???,人麻了。后来也是无意中将这些16进制转为字符发现了隐藏的信息
熟悉的文件头,于是将这些16进制拼接起来为一个新的png文件
又是一脸???
这里说明一下,看 了大佬的wp后发现这段16进制其实是 PDU编码!!一段一段放进去解密就行。
在线解密网站PDU解密
(3)png图片
看到这模糊的像素画,自己也是折腾很久没想到怎么解,即使自己后来有看过一题类似的像素解法也没想起来!!npiet
我就直接给大家一个在线的网站去解了
具体原理大家就自行百度哈
amazing!!
(4)show time!
网上找到的一个加解密代码。
import numpy as np
import cv2 def arnold_encode(image, a, b):
# 1:创建新图像
arnold_image = np.zeros(shape=image.shape) # 返回给定形状和类型的新数组,用0填充。img.shape返回img的长宽信息 # 2:计算N
h, w = image.shape[0], image.shape[1] # image.shape[0],image.shape[1],image.shape[2]表示图像长,宽,通道数
N = w # 或N=w # 3:遍历像素坐标变换
for x in range(h):
for y in range(w):
# 按照公式坐标变换
new_x = (1 * x + a * y) % N # 解密:上下对换,a变b,x变y,+变-
new_y = (b * x + (a * b + 1) * y) % N
# new_x = ( x + y) % N #狭义
# new_y = ( x + 2 * y) % N
arnold_image[new_x, new_y, :] = image[x, y, :] arnold_image = np.uint8(arnold_image) return arnold_image def dearnold_encode(image, a, b):
# 1:创建新图像
arnold_image = np.zeros(shape=image.shape) # 返回给定形状和类型的新数组,用0填充。img.shape返回img的长宽信息 # 2:计算N
h, w = image.shape[0], image.shape[1] # image.shape[0],image.shape[1],image.shape[2]表示图像长,宽,通道数
N = w # 或N=w # 3:遍历像素坐标变换
for x in range(h):
for y in range(w):
# 按照公式坐标变换
new_x = ((a * b + 1) * x - b * y) % N
new_y = (-a * x + y) % N
# new_x = (2* x - y) % N # 解密:上下对换,a变b,x变y,+变-
# new_y = ((-1) * x + y) % N
arnold_image[new_x, new_y, :] = image[x, y, :] arnold_image = np.uint8(arnold_image) return arnold_image r = cv2.imread(r'C:\Users\PC\Desktop\cat\out.png')#原始的1.bpg转换得到的文件路径
print(r) # 遍历次数
r = dearnold_encode(r, 13,14)
# r = dearnold_encode(r, 1, 1)
cv2.imshow("arnold", r)
cv2.waitKey(0)
cv2.destroyAllWindows()
这里的代码要先把bpg的图片转化为函数支持的图片格式
会在软件所在根目录下得到 out,png
然后 Run
Congratulations!
flag{c159549a-5604-4bb7-8a6e-9db9d8b1426a}
ps:曲折的解题过程,太多东西值得学习了,向大佬学习!欢迎大家交流~~
粉色的猫MISC(bugku)的更多相关文章
- CTF -bugku-misc(持续更新直到全部刷完)
1.签到题 点开可见.(这题就不浪费键盘了) CTF- 2.这是一张单纯的图片 图片保存到本地,老规矩,winhex看一看 拉到最后发现 因为做过ctf新手的密码 所以一看就知道unicode 百度站 ...
- Bugku - Misc图穷匕见 - Writeup
Bugku - Misc图穷匕见 - Writeup 原文链接:http://www.cnblogs.com/WangAoBo/p/6950547.html 题目 给了一个jpg图片,下载图片 分析 ...
- 攻防世界 Misc 新手练习区 ext3 bugku Writeup
攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...
- bugku猫片
这个猫片思路清奇,真的让我长知识了. 开局一只猫,挺可爱的. 拿到图片,老套路来一波,首先 winhex打开是正常png图片,binwalk ,stegslove都没有任何收获. 折腾了好久没有任 ...
- bugku misc writeup(一个普通的压缩包)
这个题做了好几个小时,因为没有writeup,一点一点摸索,做题思路写出来给大家交流 首先这是一个zip.rar压缩包,下载下来第一步就是拖进hexeditor中观察,检查下文件的头尾结构是否有问题, ...
- BUGKU Misc 普通的二维码
下载的文件是一个bmp文件,在我的印象中bmp好像没有什么隐写技巧,有些慌张. 既然是二维码,那不妨先扫一下试一试 哈哈!就不告诉你flag在这里! 嗯,意料之中 1首先我把它放到了stegosolv ...
- BugKu CTF(杂项篇MISC)-贝斯手
打开是以下内容 先看一下给了哪些提示 1.介绍 没了?不,拉到最底下还有 2.女神剧照 密码我4不会告诉你的,除非你知道我的女神是哪一年出生的(细品) 大致已经明白了,四位数密码,出生年份 文件是以下 ...
- XCTF.MISC 新手篇
目录 泪目 1.this_is_flag 2.pdf 3.如来十三掌 4.give_you_flag 5.坚持60s 6.gif 7.掀桌子 8.ext3 9.stegano 10.SimpleRAR ...
- BugKu-杂项(Misc)的部分Writeup(持续更新)
第一次写博客,有不好的地方,麻烦大佬指正,我用了些时间把BugKu里的Misc的解题思路和套路整理了一下,发出来分享 各位小可爱们,右边有目录可以快速跳转哦 1.签到题 给了一张二维码,扫描关注就得到 ...
- ISCC的 Misc——WP
比赛已经结束了,自己做出来的题也不是很多,跟大家分享一下 Misc 第一题:What is that? 下载链接; 打开 解压 是一个图片 因为分值很少所以题和简单 观察图片是一个向下指的手 说明fl ...
随机推荐
- bugku-source-wp详解
bugku-source-wp详解 F12先看源代码 base64解码 提交flag 发现这个flag是假的 根据提示打开kali直接扫 命令:gobuster dir -u http://114.6 ...
- Entrypoint undefined = index.html html-webpack-plugin 错误ERROR in Error: Child compilation failed: Module build failed (from ./node_modules/html-webpack-plu SyntaxError: Unexpected token )
Entrypoint undefined = index.html html-webpack-plugin 错误 ERROR in Error: Child compilation failed: M ...
- redisConfig+redisUtil开箱即用
RedisConfig @Configuration public class RedisConfig { //编写redisTemplate //固定模板,开箱即用 @Bean public Red ...
- 12月15日内容总结——ORM执行原生SQL语句、双下划线数据查询、ORM外键字段的创建、外键字段的相关操作、ORM跨表查询、基于对象的跨表查询、基于双下划线的跨表查询、进阶查询操作
目录 一.ORM执行SQL语句 二.神奇的双下划线查询 三.ORM外键字段的创建 复习MySQL外键关系 外键字段的创建 1.创建基础表(书籍表.出版社表.作者表.作者详情) 2.确定外键关系 3.O ...
- nginx微信对接
location /MP_verify_l47ZUDtvieeDlVWR.txt { default_type text/html; return 200 'l47ZUDtvieeDlVWR'; }
- 洛谷p1423
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 double n;//n:要游的距离 6 cin&g ...
- .NET周报 【2月第2期 2023-02-11】
国内文章 SQLSERVER的truncate和delete有区别吗? https://mp.weixin.qq.com/s/wTIeW8rjj3cRzoaQcg2sOw 在面试中我相信有很多朋友会被 ...
- 1 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ
一.前置准备工作 CentOS 7.6 安装 jdk1.8 openjdk 1.查看JDK版本 yum search java|grep jdk 2.安装jdk1.8,安装默认的目录为: /usr/l ...
- P18_Day2.学习目标
能够使用 WXML 模板语法渲染页面结构 能够使用 WXSS 样式美化页面结构 能够使用 app.json 对小程序进行全局性配置 能够使用 page.json 对小程序页面进行个性化配置 能够知道如 ...
- ES6的Set详解
数组去重 let arr = [ 1,2,3,4,5,3,2 ] // 数组去重 // 方法一 let newArr = [new Set(arr)] console.log(newArr); // ...