MISC MISC MISC喵
[TOC]
依旧尝试ai教做题喵
1.0 ctfshow-misc签到
题目➡
什么信息都没有给,就让Gloria输密码喵?那么去考虑一下伪加密或者弱密码爆破喵
知识点喵➡ZIP伪加密
ZIP文件的十六进制数据中,有特定的标记位来告诉解压软件这个文件是否加了密。出题人只是把未加密的标记位改为了已加密,以此来骗过解压软件,因此,我们只需要把目录里的加密标志该回去就行
我们将这个zip拖入到010里面
看图片喵!
ZIP文件的结构:
前面是正文(本地文件头,标志是50 4B 03 04)
后面是目录(核心目录头,标志是50 4B 01 02)
而目录里加密标志在找到50 4B 01 02之后,往后数第9和第10个字节是加密标志,没加密就是00 00,加密或者伪加密就是09 00或者 01 00(只要第一个字节是奇数,就会认为是加密了)
因此,我们把09 00修改为00 00即可
不知道有没有发现,这张图里面有两个50 4B 01 02,即有两个目录头
如果压缩包里只有一个文件,那么结尾就只有一个50 4B 01 02,如果有两个文件(或者1个文件夹+1个文件),结尾就会有两个50 4B 01 02,以此类推即可
修改之后保存,重新解压,得到flag
2.0 ctfshow-misc2
misc1解压出来图片就是flag就不写了
题目➡
misc2解压出来之后得到了一个misc2.txt
打开之后呢,全是乱码,所以我们考虑去vscode打开,然后发现这其实是一张.png
那其实很好办了,我们尝试修改后缀为.png,就得到flag
3.0 ctfshow-misc3
解压zip之后得到一个misc3.bpg
知识点喵➡.bpg文件
.bpg文件全称为Better Portable Graphics,它其实也是一种图片格式,和jpg或者png一样,只不过它有极高的压缩率
并且,windows系统自带的照片查看器默认打不开这种格式,并且以后可能还会碰到.webp、.psd甚至一些后缀名都被抹去的图片,所以建议下载Honeyview(蜂蜜浏览器)
就可以得到flag
4.0 ctfshow-misc4
解压缩之后得到了……好吧,6个.txt
点开之后里面依旧是乱码,所以依旧vscode打开
依旧是png
好吧,就是一个flag分成了六块,不多赘述
5.0 ctfshow-misc5
依旧解压缩…
得到了一张图片
一个假flag喵!
🤔果真是假flag吗
解压出来只有这个图片喵,所以扔进010里看一下喵
在最末端,有flag喵!
知识点喵➡png图片
png图片的正常结尾标志通常是**IEND(对应十六进制为AE 42 60 82)**如果在它后面还有一堆乱七八糟的字符,那就是出题人搞的鬼喵!
6.0 ctfshow-misc6
解压之后,依旧和misc5一样,依旧拖到010里面
ctrl F搜索了一下ctf就出来了
7.0 ctfshow-misc8
misc7和misc6“一毛一样”,不多赘述
题目➡
习惯性拽到010里面,如果直接搜ctf会发现什么都没有,但是如果一查就会发现,这里面有两个IEND
当然也可以在kali或者随波逐流里面使用binwalk查看,也会发现这里面有两个png
kali➡
随波➡(文件里面找binwalk文件提取)
对于操作系统来说,当使用windows自带的看图软件打开misc8.png时,软件从头开始读,读到第一张图片的文件尾标志(png图片结尾是IEND),它就停止了,自动忽略后面拼接的第二张图
既然已经找到第二张图片,那我们就把他提取出来,这里在kali终端使用foremost来提取,输入foremost misc8.png
得到flag
知识点喵➡binwalk和foremost
binwalk是一款固件分析工具,但我们主要用它来文件扫描和侦察。它记录了成千上万种文件的文件头特征,当他扫到89 50 4E 47的时候,他就会报告有一张png,即他会告诉你文件里面藏了什么,以及藏在哪个位置(offset/偏移量)
而foremost,是一款数据恢复工具,后来被广泛应用于文件分离提取。foremost不仅认识文件头,还认识文件尾,他根据文件结构,自动的把隐藏文件完美剥离出来并分类好
8.0 ctfshow-misc10
misc9题目➡
提示flag在图片块里
奇怪喵,解压后拖到010直接搜索ctf就出来了…啊巴啊巴,不多赘述
下一位
题目➡
提示flag在图片数据里
直接010搜索是什么都找不出来的
知识点喵➡png图片底层原理
一张png图片,是由一个个块(chunk)拼接而成的,包括:
IHDR:包含图片的宽、高信息
PLTE/sRGB:包含颜色信息
IDAT:⭐图片数据,它存放着图片真实的像素信息
IEND:标志着文件结束
之所以直接搜索搜不到,是因为png为了减小文件体积,会把IDAT里面的数据进行Zlib压缩
因此,我们继续使用binwalk,先把zlib数据解压出来
kali终端输入binwalk -e misc10.png(这里的-e是提取解压的意思)
然后会发现提取出来四个文件,两个zlib,两个没有后缀
其实是两两配对的,zlib是binwalk直接提取出来的压缩数据块,而那两个没有后缀的是binwalk解压缩之后得到的真实数据,flag就在这里面
然后用笔记本打开他俩搜索ctf即可,如果一个一个找太过于麻烦,我们可以在kali终端里输入
grep -a -r "ctfshow" _misc10.png.extracted/
-r代表递归遍历(在这个文件夹里的所有文件中翻找)
-a把所有的文件都当成纯文本来搜索(无视乱码)
得到flag
9.0 ctfshow-misc11
题目➡
提示flag在另一张图片里面
🤔,第一反应还是拖到010里面,搜索了一下IEND,但是会发现只有一个IEND
然后把他放到kali里面,使用binwalk和foremost搜索了一下,发现还是只有一张png
所以,另一张图片在……?
其实是misc8的进阶版喵…
上文提到⬆png的格式,包括IDAT,我们在010里面一搜,就会发现,这一张图片里面有两个IDAT
那么说明,这道题目其实是把两张完全不同的图片的IDAT数据,塞到了同一个png文件里面
这张图片的结构变成了这样➡
IHDR➡IDAT1(没有flag)➡IDAT2(藏有flag)➡IEND
但是呢,因为windows自带的看图软件它是按照顺序读,读完第一张的IDAT之后,觉得画面已经完整了,就不去读第二张图片的IDAT
binwalk也找不到的原因是?binwalk只查找文件头,第二张图片只有IDAT部分,根本没有自己的IHDR和IEND,所以binwalk只会觉得这就是一张普普通通的单张图片
因此这道题目,我们只需要把第一张图片的IDAT部分删掉,就可以得到flag
依旧010喵
这里我们先按F5运行png模板喵,如果没有png模板的话先下载一个(点击模板➡模板储存库➡搜索PNG.bt➡install)
然后呢,我们打开模板结果(没有的话去视图里面找或者按Alt+4),我们会发现里面很清楚的躺着两个IDAT
我们点击第一个IDAT块,在空白处左键点剪切,然后保存,就可以得到flag了喵(如果直接看不了的话,试试前面提到的Honeyview)
10.0 ctfshow-misc12
题目➡
提示flag在另一张图片里
也…?又在另一张图片里?不管了,先010看一眼喵
哇趣,30个IDAT…
重复上一题操作,挨个删除IDAT,直到出现flag为止(这里在010里面操作时,记得删除一个IDAT就重新运行一下png模板,不然会报错)
得到flag(好吧我不记得我删掉了几个IDAT了)
11.0 ctfshow-misc13
题目➡
提示flag位置在图片末尾
010上!
使用010打开一看,又是两个IDAT,习惯性先删去第一个,发现得不到flag
因为提示图片末尾,所以看了一眼图片末尾
其实是没有直接的flag的,但是仔细看会有ctfshow的痕迹,而且会发现,其实不止一个地方有ctfshow的痕迹,总共有四个(只展示一个了这里),这里会用到正则搜索
知识点喵➡正则搜索
正则表达式(Regular Expression,简称Regex,代码里常写为re),经常会用来处理misc中的乱码,而且会在像配置WAF规则拦截带有UNION.*SELECT的恶意SQL注入请求使用
简单来说,正则搜索就是找符合某种规律的模式,比如c.t.f..*?}
.:点号是超级通配符,意思是任意一个字符
.*:代表匹配任意数量的任意字符
?:代表非贪婪模式,意思是一旦碰到后面那个}就立即停止,不要再往下多拿了
然后既然知道了这道题存在字符穿插(间隔插入),并且看得出来,这道题目是每隔两个字符取一个,因此我们来编写一个oy脚本来得出这四个flag
(这里插一句,如果完全没有规律,那么就需要用到高级一点的正则表达式分组提取或者写for循环配合if条件语句,以后遇到了再说喵)
编写脚本ing(这里用的是pycharm,vscode也可以喵)
1 | import re #导入正则表达式模块 |
然后运行得到四个flag,挨个尝试,倒数第二个是正确的喵
好的不写了喵,web作业还没写喵…
Leave a comment