misc17

提示:flag在图片数据里。
先binwalk分析,没啥问题,然后试试zsteg
如何安装zsteg呢?

git clone https://github.com/zed-0xff/zstegcd zsteg/gem install zsteg


发现隐藏的数据,位置处于 extradata:0
将数据提取出来:zsteg -E “extradata:0” misc17.png > 1.txt
然后再 binwalk 1.txt -e 把1.txt中的数据分离出来,拿到flag

misc18

提示:flag在标题、作者、照相机和镜头型号里。

ctfshow{325d60c208f728ac17e5f02d4cf5a839}

misc19

提示:flag在主机上的文档名里。
用matlab查看文件信息

info = imfinfo('misc19.tif')



DocumentName和HostComputer连起来就是flag啦!
ctfshow{dfdcf08038cd446a5eb50782f8d3605d}

misc20

提示:flag在评论里。
exif信息查看在线网站,上传图片,看到信息(谐音可还行)

ctfshow{c97964b1aecf06e1d79c21ddad593e42}

misc21

提示:flag在序号里。

686578285826597329
转字符得到hex(X&Ys)

import binascii
str='686578285826597329'
print(binascii.a2b_hex(str))


发现上面有两组与XY有关的数据,中间还有https://ctf.show/和ctfshow{}
根据提示hex(X&Ys),应该是要把这里的十进制数值转为十六进制
把四段拼起来得到3902939465237161861910824528172980145261,然后转十六进制,再套上ctfshow{},如果不是整体直接转换的话,每段分别转hex,然后拼起来
最终得到:ctfshow{e8a221498d5c073b4084eb51b1a1686d}


后面一样的道理。。。。
ctfshow{e8a221498d5c073b4084eb51b1a1686d}

misc22

提示:flag在图片里。
MagicExif下载网址
用magicexif打开,直接发现flag
这里有个bug,工具放到移动硬盘里打不开。。。必须放到本地磁盘。。。不知道为啥

ctfshow{dbf7d3f84b0125e833dfd3c80820a129}

misc23

没有exiftool的,先在kali中装一下吧

apt-get install exiftool

命令 exiftool misc23.psd
Timestamp指的是时间戳,DECtoHEX是十进制转十六进制
这里利用在线网站获取时间戳



最后得到4段

874865822 2699237688 2156662245 460377706

分别hex后拼在一起
得到: ctfshow{3425649ea0e31938808c0de51b70ce6a}

misc41

提示:
H4ppy Apr1l F001’s D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。

第一句提示的F001是突破点,这个位置有大量F001,看起来组成了某种形状
Winhex打开图片,搜索F001,全部高亮!


后面还有不少。。。不在放图了。。。

ctfshow{fcbd427caf4a52f1147ab44346cd1cdd}

misc36

提示:出题人坦白从宽,正确的宽度在920-950之间
脚本爆破宽度,先把gif的高度拉高,否则会这样子。。。。(啥都没有)

import zlib
import struct
filename = "misc36.gif"
with open(filename, 'rb') as f:all_b = f.read()for i in range(920,951):name = str(i) + ".gif"f1 = open(name,"wb")im = all_b[:38]+struct.pack('>h',i)[::-1]+all_b[40:]f1.write(im)f1.close()


ctfshow{1ebf739f832906d60f57436b8179166f}

misc27

misc28

gif的每一帧都有宽高所以修改的地方不止一处

misc29

对gif全部帧进行替换。
搜索全部的96 00换成FF 00


ctfshow{03ce5be6d60a4b3c7465ab9410801440}

misc30

在宽度的位置进行修改成950的二进制03 B6,注意要倒着写。


ctfshow{6db8536da312f6aeb42da2f45b5f213c}

misc31

通过这篇博客了解一下bmp文件结构

目前是900*150=135000个像素大小,文件头占了53个字节,文件尾的位置在487253字节处(后面两个字节是windows的”补0”),又因为每个像素点由3个字节(十六进制码6位)表示,每个字节负责控制一种颜色,分别为蓝(Blue)、绿(Green)、红(Red),所以文件真实的像素大小为:(487253-53)/3=162400

这题的高度是对的,所以正确的宽度是162400/150=1082
bmp文件修改宽度,借助winhex,我这里宽改到43A(也就是3A 04)


ctfshow{fb09dcc9005fe3feeefb73646b55efd5}

misc32

CRC爆破宽度

import struct
import binascii
import osm = open("misc32.png", "rb").read()
k = 0
for i in range(5000):if k == 1:breakfor j in range(5000):c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + m[24:29]crc = binascii.crc32(c) & 0xffffffffif crc == 0xE14A4C0B:k = 1print(hex(i), hex(j))break

misc33


ctfshow{03070a10ec3a3282ba1e352f4e07b0a9}

misc34

由于CRC也被修改了,所以我们对宽度进行爆破,然后自己找图片

import zlib
import struct
filename = "misc34.png"
with open(filename, 'rb') as f:all_b = f.read()#w = all_b[16:20]#h = all_b[20:24]for i in range(901,1200):name = str(i) + ".png"f1 = open(name,"wb")im = all_b[:16]+struct.pack('>i',i)+all_b[20:]f1.write(im)f1.close()

ctfshow{03e102077e3e5de9dd9c04aba16ef014}

misc37

misc43

提示:错误中隐藏着通往正确答案的道路
猜测与crc错误有关。
利用PCRT提取
PCRT:一款自动化检测修复PNG损坏的取证工具
可以在kali中安装PCRT:git clone https://github.com/sherlly/PCRT.git
然后 python PCRT.py -y -v -i misc44.png > 666.txt

把错误的code提出来用hex转字符
将这些提取出来,然后转16进制就可以。
E59387E5 93A62E63 74667368 6F777B36 65623235 38396666 66663565 33393066 65366238 37353034 64626330 3839327D

import binascii
str='E59387E593A62E63746673686F777B36656232353839666666663565333930666536623837353034646263303839327D'
print(binascii.a2b_hex(str))

b’\xe5\x93\x87\xe5\x93\xa6.ctfshow{6eb2589ffff5e390fe6b87504dbc0892}’

misc44

提示:错误中还隐藏着坑
一种CRC32隐写,错误的CRC32和正确的CRC32分别代表着01,再8位一组转字符,劝大家不要拖进tweakpng,因为会有几百个弹窗。。。
至于如何提取正确和错误的CRC32,我的做法是用PCRT识别再放入txt,再写个脚本,就比较容易
PCRT:一款自动化检测修复PNG损坏的取证工具
可以在kali中安装PCRT:git clone https://github.com/sherlly/PCRT.git
然后 python PCRT.py -y -v -i misc44.png > 666.txt
python脚本代码:

f = open('666.txt')
res = ''
while 1:c = f.readline()if c:if 'chunk crc' in c:# print(c)res+='0'elif 'Correct IDAT CRC' in c:res+='1'else:breakprint(res)
print(len(res))
for i in range(len(res)//8):a = res[i*8:i*8+8]try:print(chr(int(a,2)),end='')except:pass

ctfshow{cc1af32bf96308fc1263231be783f69e}

misc45

提示:有时候也需要换一换思维格式
一个新的知识点。
具体做法就是:先把图片从png格式转为bmp格式,然后直接binwalk提取就能得到flag.png了。
我是matlab转的图片格式,两行代码就可以哦,当然大家也可以去在线网站转换格式。
matlab代码:

I=imread('misc45.png');
imwrite(I,'d:\455.bmp');

先读取png图片,然后重写转换图片格式为bmp,路径大家自行调整即可。

然后我们用binwalk 455.bmp -e 分离文件即可。

misc46

用gif每一帧的偏移量作为坐标来画图即可,这里gif的偏移量我是用identify命令直接获取的
kali中的identify需要安装一下,在root权限下:apt-get install imagemagick
identify misc46.gif > 2.txt

再写个脚本画图即可(首次使用,要安装一下matplotlib 用命令pip install matplotlib)

from PIL import Image
import matplotlib.pyplot as plt
f = open('2.txt')
pp = []
while 1:c = f.readline()if c:s = eval(c.split('+')[1]+','+c.split('+')[2][:2])pp.append(s)print(s)# print(c)else:breakimg = Image.new('RGB',(400,70),(255,255,255))
for i in pp:new = Image.new('RGB',(1,1),(0,0,0))img.paste(new,i)
plt.imshow(img)
plt.show()


ctfshow{05906b3be8742a13a93898186bc5802f}

misc47

给了一个png,打开发现没内容,用浏览器打开,确认是apng
简单来说就是每一个IDAT块前面都会有一个fcTL块,它其中就包含水平垂直偏移量
如下

import struct
from PIL import Image
import matplotlib.pyplot as plt
f = open('misc47.png','rb')
c = f.read()
c = c[c.index(bytes.fromhex('6663544C00000001')):]
pp = []
for i in range(1,1124,2):start = c.index(bytes.fromhex('6663544C0000')+struct.pack('>h',i))# start = c.index(bytes.fromhex('6663544C000000'+hex(i)[2:]))# print(start)fc = c[start:start+30]print(fc[18:20],fc[22:24])print(struct.unpack('>h',fc[18:20])+struct.unpack('>h',fc[22:24]))pp.append(struct.unpack('>h',fc[18:20])+struct.unpack('>h',fc[22:24]))# print(fc.index(b'\xb6'),fc.index(b'\x34'))
# print(c[:100])
img = Image.new('RGB',(400,70),(255,255,255))
for i in pp:new = Image.new('RGB',(1,1),(0,0,0))img.paste(new,i)
plt.imshow(img)
plt.show()

ctfshow{6d51f85b45a0061754a2776a32cf26c4}

misc48

用winhex打开,发现右侧文本信息有提示
1、统计FF的数量,再减去1
2、ctfshow{}中包含32个字符

第一条提示,其实指的是统计每两个有意义块之间的FF的数量再减一
图中紫色的就是,开头的那个FF也算,因为只有一个,减去1后就是0;接下来是12、11、0…
因为flag长度是32位,所以只统计前32个,即:
0 12 11 0 7 10 13 13 9 0 9 13 0 13 6 0 10 9 2 1 0 1 10 8 11 5 12 7 2 2 3 10
用小脚本跑一下

s = '0 12 11 0 7 10 13 13 9 0 9 13 0 13 6 0 10 9 2 1 0 1 10 8 11 5 12 7 2 2 3 10'
d = '0123456789abcdef'
for i in s.split(' '):print(d[int(i)],end='')

0cb07add909d0d60a92101a8b5c7223a
ctfshow{0cb07add909d0d60a92101a8b5c7223a}

misc49

提示:它们一来就是十六种。本题略脑洞,可跳过
用winhex打开,能看到很多字符串

重点是这些字符串前面,都出现过FFE? 这种格式的数据,搜索一下发现有挺多的


把所有十六进制数保存在1.txt中,用一个小脚本处理一下
如果带有\x,在记事本中直接替换掉所有的即可。

f=open("1.txt","r")
txt=f.read().replace("\n","")
f.close()l=txt.split("FFE")
flag=""
for i in range(1,len(l)):flag += l[i][0]
print(flag.lower()[:32]) #结果套上ctfshow{}

其实就是把FFE后面的那个字符提取出来,再连接在一起,一共32位(),这就是flag。
ctfshow{0c618671a153f5da3948fdb2a2238e44}

misc50

提示说: 有时候视线也要放低一些。第一感觉用winhex修改图片高度,然而并没有用,多出来的部分一片黢黑。。。
用stegsolve工具打开,不停的换色道,发现flag踪迹(狗头)


ctfshow{84470883ee1eec2e886436461bf79111}

ctfshow中Misc入门WP(超级全)相关推荐

  1. ctfshow 做题 MISC入门 模块 41-50

    ctfshow 做题 MISC入门 模块 41-50 -- misc41 题目描述: H4ppy Apr1l F001's D4y! 愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字. 直接 ...

  2. CTFshow——MISC入门

    MISC入门 图片篇(基础操作) misc1 misc2 misc3 misc4 图片篇(信息附加) misc5 misc6 misc7 misc8 misc9 misc10 misc11 misc1 ...

  3. 攻防世界Misc入门题之坚持60s

    攻防世界Misc入门题之坚持60s 继续开启全栈梦想之逆向之旅~ 这题是攻防世界Misc入门题之坚持60s 下载附件,一开始我默认用压缩包对jar文件,搞到一解压出来还以为是某个游戏存档,后来才发现是 ...

  4. ctfshow—2023愚人杯wp

    ctfshow-2023愚人杯wp 热身 热身 100 愚人杯比赛秉承欢乐.有爱.进取的精神 在群里师傅热心帮助下,已经开始第三届比赛啦! 欢迎各位师傅参加,希望大家玩的开心,比赛题目可以自由讨论.但 ...

  5. 超级全的免费杂志索取汇总~ 希望加精 不收集怎知不容易啊 奉献出来

    超级全的免费杂志索取汇总~ 希望加精 不收集怎知不容易啊 奉献出来 1.远望资讯过刊免费索取 索取地址: http://www.cniti.com/campaign/itnew/ 说 明:过刊.填写个 ...

  6. 攻防世界Misc入门题之掀桌子

    攻防世界Misc入门题之掀桌子 继续开启全栈梦想之逆向之旅~ 这题是攻防世界Misc入门题之掀桌子 题目是一串16进制数,因为只有0~f,不是base64,直接扔到十六进制转字符串: 好的,不知道转了 ...

  7. 攻防世界 crypto入门WP

    攻防世界 crypto入门WP 前言 下学期要求密码和Re,现在这俩几乎是空白,趁着暑假的功夫,最近也能闲下来,就学一学crypto,其实真正接触发现挺有意思的,各种密码的加密千奇百怪,层出不穷,也是 ...

  8. 花了3个月整理的超级全面的Python资料和Java面试题,分享给大家!

    为广大Python爱好者精心准备的<Python进阶>,是<Intermediate Python>的中文译本,IntermediatePython这本书具有如下几个优点:简单 ...

  9. spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...

    SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件 一.概述 Spring Boot允许多种配置来源,官网是这样说的: Spring Boot使用一种非常特殊的Property ...

  10. python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...

    SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...

最新文章

  1. c++ vector简单使用
  2. R语言ggplot2可视化(facet图)使得第一个子图的坐标轴范围一致
  3. python arma_Python ARIMA
  4. Python之路,day22-BBS基础
  5. 在CentOS上安装Git
  6. 关于双WiFi板卡做路由功能的记录
  7. HW--漂亮度2(测试通过)
  8. Java swing中的keyListener使用事例
  9. 客座编辑:李国庆(1968-),男,博士,中国科学院遥感与数字地球研究所研究员、博士生导师...
  10. scala学习-scala中的特殊符号使用
  11. pytorch学习笔记(九):softmax回归的简洁实现
  12. 英伟达最大gpu_摩尔定律未死,黄律定律已出!英伟达要用GPU推动AI性能逐年翻倍...
  13. 计算机网络医院拓扑图方案设计,[方案]某医院计算机网络综合布线系统设计
  14. webstorm激活破解方法大全
  15. java毕业设计蛋糕店会员系统Mybatis+系统+数据库+调试部署
  16. 不想失业?你得学会为自己工作
  17. 台式计算机怎样能搜无线连接,台式电脑怎么设置无线网络!台式电脑也能上wifi...
  18. win10在几个窗口间切换的快捷键
  19. JS实现字符串模糊匹配
  20. 旅游景区游玩管理系统

热门文章

  1. Ubuntu设置PPPoE拨号上网
  2. PHP 中openssl_pkey_get_private函数获取私钥返回 FALSE 的问题
  3. 仓央嘉措---不负如来不负卿---问佛--见与不见
  4. python基础项目 --爬取金山词霸翻译功能
  5. 02-linux-arm板上opencv移植--终极解决方案之buildroot基础配置(原创)
  6. postman接口测试之断言+参数化
  7. 合理设置 让你的迅雷下载速度越来越快
  8. 如何打开控制面板(windows10)
  9. Affymetrix SNP6.0芯片分析
  10. デュナリス / 风奶