ctf MISC入门 总结 图片篇(ctfshow为靶场)

发布于:2024-12-22 ⋅ 阅读:(10) ⋅ 点赞:(0)

文件问题基本的操作

1、文件头的确认

例题ctf show 

010editor打开   看一眼文件头是  png 改了结束

2、不同图片格式的打开

这个题就是信息差   

一眼bpg  这是什么呀 没见过啊          这个时候你就需要一个 honyview工具 (文末我会全部给)

图片的隐写(附加信息类)

1、根据图片的类型

bpg类型  这类图片 大多就是工具直接打开就出了

honeyview工具   ctf show 练习题

2、信息的附加

1、附加在文件尾部

这种直接010editor打开 翻到最末尾就出来了

这种的难度很小  一般是不会这么搞

2、附加在ascii文中

这种直接 010editor 打开 ctrl+f搜寻就行  因为这是ctfshow的题所以我就搜 c  如果是别的你就可以搜前几个字母  建议只搜一个  因为有时候会搞你

当然还有第二个方法  就是字符串的提取   使用kali自带的strings 直接拿下

3、异常的附加模式

先搜了 c 没有  搜了 S没有  搜了 B没有   因为是愚人节的题直接搜索 F001试一下 (为什么想到这个 正常不应该是 fool吗  这是个HEX 直接搜索)

这个就比较鸡贼了  

png文件的隐写

下边有些独属于png的解法

1、 图片里藏图片

工具  kali的 binwalk  可以检测文件内的隐写   binwalk -e 是进行分离

这边我推荐  进入 kali的命令行最好不要使用root  会出现很多的毛病

但是现在这个不能使用binwalk  而是使用  foremost(需要下载) 为什么呀?只有这个foremost才能分离图片

输出之后会出现一个 output 里面的png文件夹存着去除的png

2、png的数据块问题

两个类型:1、少数据块  2、多数据块

1、

题目说  在块里   
PNG格式解析

很有疑问的看看上边的大哥的文章了解一下就行

这个大家想到这个IDAT就行  这个是储存图像数据的

工具:tweakpng

打开是这样的 一看  两个IDAT数据块

多个数据块的问题  现在这个是 需要分离的  如果分不出来就需要换个思路(把数据合在一起再分离)

直接开binwalk梭哈

发现两个 zlib  那大家可能疑问唉?这个zlib是什么意思呀      这个就是数据的压缩形式说明有数据

分离的文件夹拉出来  记事本打开  拿下

ctfshow{353252424ac69cb64f643768851ac790}

少数据块第二个练习题

这个大家记住 png我们先使用weakpng打开看一番再说

和上边一样的类型直接  binwalk 搞发现没出东西  那怎么办呀 ?不是两个数据嘛  删一个试试

删除一个再直接F7查看

拿下了  这个可能就是图片覆盖问题

2、多个数据块的问题

一打开我你妹的什么情况   密密麻麻的一群  大家有没有发现一个细节就是这些IDAT都很小呀  

那我们直接给合起来再分解试一试  是不是思路嘛

试了一下不行啊分解出来的是乱码

那就试试是不是也是数据块的覆盖

我们拿中间  就是 3149-41=3108   接着就是进行删除 因为

合起来的IDAT是 10801 但是这个3149 就差了很多吧这些删除就是  隐藏的了

不用数了删除前八个就出来了

3、png   的extradata:0 错误

工具 :zsteg (这个不应该在这边说的  这个是个很好的LSB辨别工具)    (这个是看的大佬的解法)

直接拿下

结合binwalk 继续分离

出来了

详细信息的提取

这个就是  直接右键属性 详细信息自己看

EXIF隐藏

在说这个之前  先康个 19题

这个有意思  就是上来一看  一个tif文件很害怕呀  什么情况啊  

未知的文件直接放随波逐流就行了虽然现在很多的题都有一些东西阻断随波逐流的判断但是这个依旧是超标

工具在文末

exif是什么?  我简单点说就是可交换文件格式(说人话就是 对图片加上标签)(很容易隐藏一些关键的信息)

这个题  简单的exif就直接使用  viewhony看就行了

但是  我要介绍一个工具   exiftool  直接加文件名    

序列号其实也是exif的一类

直接上工具  

试了一下不行  那就分别提取 X  Y的序列

3902939465、2371618619、1082452817、2980145261  

然后就是转进制  我先试了一下 ascii直接鸡鸡  然后就转16进制成功

ctfshow{e8a221498d5c073b4084eb51b1a1686d}

时间戳

什么是时间戳  顾名思义是一种针对时间的加密方式 

正好这个  说flag在时间里  先 exiftool 一下

拿到时间了   转为时间戳 1997:09:22 02:17:02, 2055:07:15 12:14:48, 2038:05:05 16:50:45, 1984:08:03 18:41:46(使用ctfshow)

注意时间的编写

要把:替换为 - (只替换年月日)

874865822 2699237688 2156662245 460377706

这个就是转换后的(  借用一下大哥的脚本) 转hex加 ctfshow就完事了

x1='874865822' x2='2699237688' y1='2156662245' y2='460377706' jx=(hex(int(x1,10))[2:]) jg=(hex(int(x2,10))[2:]) wjg=(hex(int(y1,10))[2:]) wgj=(hex(int(y2,10))[2:])

print('ctfshow{'+jx+jg+wjg+wgj+'}')

总结:

ctf重在思路   还请做题之前保持清醒的做题状态