CTF-Misc "雅"题共赏
用这篇博客来记录一下本人在比赛中遇到的一些疑难题(本人尚未解出的题)
如果师傅们有进一步的想法或者做出来了,可以联系我一起交流一下解题思路
这篇博客可以算是本人的求助贴,因此本文中的大部分内容并不适合刚接触Misc方向的新同学
尝试本文中提到的相关题目可能会耗费大量时间,请各位读者量力而行【慎行】
[SOLVED] 题目名称 nothing (2024 蓝桥杯全国总决赛)
题目附件: https://pan.baidu.com/s/1eGIfajRXx3uqjlk54CaZ1g?pwd=ax6g 提取码: ax6g
下载附件,得到一个noting.zip
,打开发现是DOCX的结构
因此改后缀为.docx并打开,发现有一张白色的图片,还有一段白色的文字:什么都没有
可以把DOCX作为ZIP解压,然后直接从noting\word\media
路径中把这张白色图片image1.png
提取出来
图片的大小是34x34,我们把图片分通道提取出来,猜测存在LSB隐写
仔细观察各通道的数据,发现RGBA的0通道中都隐写了信息
RGBA里面都有LSB的数据,按道理来说一共就4x3x2x1=24种排列组合,爆破一下组合的顺序应该就能得到flag
但是我尝试后并没有发现flag,下面放的是我尝试的提取LSB数据的脚本
|
|
后来在@byxs20
师傅的帮助下,获得了新的解题思路,其实这张图片种一共就一下五种像素点
|
|
其中(255, 255, 255, 255)
像素是没有隐写数据的,然后另外几个像素分别按照254的位置用四进制隐写了数据
这里为啥能想到
(255, 255, 255, 255)
像素是没有隐写数据的呢?因为如果师傅们尝试把不同像素的坐标打出来,可以发现这个像素是主要集中在前两列和第三列的前16个像素的
因此比较有经验的Misc师傅就会感觉到,大段连在一起的相同像素是不存在隐写数据的,因此需要把这个像素剔除
并且这里这样的排列方式,也提示了我们后续步骤中提取像素点需要按列提取
具体的对照表如下:
|
|
然后具体隐写的原理就是每轮的值x4,再加上当前的四进制值,最后可以得到一个长整型,具体解密代码如下:
|
|
还得是感谢B神脚本提供的思路,要不然根本想不到这个原理
运行以上脚本后就可以得到一个ZIP压缩包,但是Windows下直接打开是看不到内容的
因为被压缩的文件内容包括文件名都是 \r
、\n
、\t
、空格
这种空白字符
因此我们在Linux下使用脚本解压并提取其中的内容(因为Windows下看不到文件名为空格的文件)
然后里面内容的加密方式其实和上面的原理是一样的,也是四进制,就是具体的对照表是未知的
但是因为一共就四种字符,所以我们可以直接爆破一下
|
|
爆破后即可得到正确的表和最后的flag:flag{46eade75-846b-4d26-98f7-2cb3cb4686ed}
完整的解题脚本如下:
|
|
B站讲解视频中的脚本如下:
|
|
[SOLVED] 题目名称 道可道,非常道 (2024 ISCC 博弈对抗赛)
非常感谢 @Aura 师傅最后的奇思妙想,发现了频谱图中的二维码需要旋转,给这道题画上了圆满的句号。
题目附件: https://pan.baidu.com/s/1dyDJ_az_smtX6exFLinavg?pwd=pnet 提取码: pnet
赛后主办方给出了本题考察的知识点:
题面信息如下: 一个热衷于研究道家文化的人在伏羲画像前留下了一个皮箱。 Hint: 暴力破解密码:iscc1234
附件给了两个txt还有三个7z压缩包
皮箱封条.txt
的内容如下:
大衍数列,来源于《乾坤谱》中对易传“大衍之数五十”的推论。主要用于解释中国传统文化中的太极衍生原理。
数列中的每一项,都代表太极衍生过程中,曾经经历过的两仪数量总和。是中华传统文化中隐藏着的世界数学史上第一道数列题。
请依据下面的提示总结出大衍数列的通项式
0,2,4,8,12,18,24,32,40,50,60,72,84,98……
最后请求出第22002244位是多少?(好像他比较喜欢十六进制)
解决该问题的脚本如下,最后算出答案是242049370517768
,十六进制是dc2482bf7108
|
|
尝试使用得到的答案去解压压缩包,但是发现不是解压密码,不知道哪里出问题了,因此打算直接爆破了
先用下面这个脚本生成所有可能的结果,然后把结果输出到一个字典中
用在线网站或者7z2john
生成压缩包的hash,然后使用hashcat进行爆破
|
|
|
|
爆破即可得到皮箱左边.7z
压缩包的解压密码:5a2dd7b80
,这个数字转十进制是24207260544
,是数列的第220033
项
当然,这里也可以用 PasswareKit
进行爆破,大概要爆个十分钟左右也能得到压缩包的解压密码
解压后可以得到下面这5张二维码碎片
对二维码比较熟悉的师傅可以看出来,兑不兑呢?
这个图片的位置好像有点不对劲
并且我们拿010打开可以在末尾得到一个提示:overturn180
因此我们需要把上面那个兑不兑呢?
图片旋转180度(当然,我一开始没看到这个提示,但也凭着感觉把这个图片旋转了180度。。
皮箱封条2.txt
的内容如下:
203879 * 203879 = 41566646641,
仔细观察,203879 是个6位数,
它的每个数位上的数字都是不同的,
平方后的所有数位上都不出现组成它自身的数字。
在1000000以内具有这样特点的6位数还有一个,两数相乘是多少?
解决该问题的脚本如下,可以得到另一个数为639172
,因此和203879
相乘的结果为130313748188
|
|
经过尝试,发现130313748188
的十六进制值1e574dfedc
就是皮箱右边.7z
的解压密码
解压后可以得到以下四个文件夹
第一个文件夹里有加急密信.word,010打开查看文件头发现是PNG图片,改后缀为.png可以得到下图
第二个文件夹里有个wav文件,au打开看频谱图可以得到下图
第三个文件夹里有一张宽高被修改导致CRC报错的PNG图片,还原宽高后可以得到下图
第四个文件夹里有一张food.png,直接stegsolve打开查看,发现红色通道里藏了下图
因此结合文件夹的名称和得到的类似二维码的碎片,大概就能猜到出题人的意图了。。
听说比赛快结束的时候,主办方给出了fuxi.7z
的密码:iscc1234
额,虽然确实是弱密码,但是大部分人字典里应该都没有这个吧
直接爆破的话,8位的7zip密码也几乎不可能在赛中爆出来吧
不知道出题人咋想的,有没有测过题?或者出题人就是一个完全不懂Misc的新手?
解压压缩包后,可以得到下面这张bmp图片
上面这张图片结合之前得到二维码碎片的文件名,很容易联想到是伏羲八卦图
去网上搜一个伏羲八卦图,按照图中的顺序,二维码碎片的分布应该如下
艮 | 坤 | 震 |
---|---|---|
坎 | 太极 | 离 |
巽 | 乾 | 兑 |
但是经过尝试,发现按照这个顺序拼出来的二维码扫出来是乱码,因此尝试换了一个想法
首先我们可以保证正确的是二维码三块定位块以及中间太极
这几张图片的位置
我们尝试先将上面确定的四块用QRazyBox
拼好,然后观察下图中红色框框标出的部分,猜测这两块碎片中一定有一行是这样的
因此,经过对比,我们首先可以确定出左侧中部的那一块是离
然后经过反复比对,发现中间上面那块找不到对应的碎片,这里需要感谢@Aura师傅,发现了wav频谱图中那块碎片旋转后正好符合
到这一步,我们就可以完全确定出每块碎片的位置了,因为离
的对面肯定是坎
,坤
的对面肯定是乾
艮 | 坤 | 震 |
---|---|---|
离 | 太极 | 坎 |
巽 | 乾 | 兑 |
最后我们用QRazyBox
按照上面的顺序拼出完整的图片,然后扫码即可得到最后的flag:ISCC{wisH_U_ki7mo5_all_tHe_bEst}
完结撒花 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
不知道有没有和我一样一直在等待这道题答案的师傅,但是人海茫茫,还是感谢师傅们能看到这里!
[SOLVED] 题目名称 破译行动 (2024 ISCC 博弈对抗赛)
题目附件:https://pan.baidu.com/s/1GAhnDyy_2yplJeWibRsadg?pwd=py7u 提取码: py7u
赛后主办方给出了本题考察的知识点:
题面信息如下:
你抓到一个间谍,从他身上搜出来一张照片和一个纸条,请破译出来他的过来的用意。
本题在和北理工师傅交流下已经解出了,但是由于那边不同意公开 wp 因此博客里就不放了
有兴趣的师傅可以私聊我或者在我的交流群中获取详细思路
我只能说这道题根本算不上一道合格的 CTF 题,解题的每一步都莫名其妙
对我而言,我认为出题人的出题水平是受到质疑的,就算是 防AK 的题也应该有理有据思路清晰
而不是和这题一样纯粹是为了刁难参赛选手而随便凑几个自以为高深的脑洞出题
(如果出题人能看到这里,并觉得我的看法有误的话,也欢迎随时联系我一起探讨一下出题意图
同时也借这道题表达一下我个人对 CTF- Misc 方向的看法吧:有很多没有入门 MIsc 的初学者老是会认为 Misc 方向就是脑洞,不知道为什么要一步步这样做然后得到 flag。当然我不否认确实有部分赛题和ISCC 这道破译行动一样,纯是为了折磨刁难参赛选手东拼西凑的不合格的垃圾脑洞题,但是我觉得大部分出题人还是很负责的,非常巧妙的去构思题目,让参赛选手做出来后恍然大悟茅塞顿开。我觉得 Misc 最重要的就是 经验+观察+分析,首先你要通过刷题了解常见的套路以及基础知识,当然你可能没办法一开始就了解的很深刻很底层,但是随着你不断的学习与刷题,量变产生质变,你对知识点的理解也会越来越深刻,当你发现做 Misc 题可以不再依靠各种一把梭工具,而是尝试依靠发现的细节自己分析写脚本的时候,那才算是真正入门Misc了。有时候做不出来的题不一定就是“shi 题”,也有可能是选手本身目前对题目考察的知识点理解的还不够深刻(说这句话的原因是最近老是有人发我一些签到题然后说是 shi 题。。)。
[SOLVED] 题目名称 QRSACode
题目附件: https://pan.baidu.com/s/1Jtgzh2AOcR4J7A-Wa-83LQ?pwd=8zcj 提取码: 8zcj
这道题要感谢 @Aura 师傅的奇思妙想,发现了
hint.png
中的每个像素其实都是RSA中的e
题面信息如下
描述:p = 13,q = 19,e = ?
解压附件给的压缩包,可以得到如下两张图片,其中task.png
中隐约可以看到一张二维码
然后结合题面的信息,我们知道在RSA中e
要和phi
互质,其中phi=(q-1)*(p-1)
因此我们可以写个脚本得到e
所有可能的取值范围
|
|
得到e
所有可能的取值如下,一共84种可能取值:
|
|
然后我们尝试去读取hint.png
中的像素点
|
|
发现2500个像素点中有2496种像素,并且只有以下两种像素出现了2次,别的像素都是只出现一次
|
|
我们把所有像素打印出来可以发现,每个像素的RGB值都是取自我们之前得到的e
的取值范围中
然后我们再去看task.png
,发现图像时RGBA格式的,只不过A通道的值都是255
|
|
发现一共有1112种不同的像素
并且背景接近白色的像素点的RGBA的值为(246, 246, 246, 255)
,黑色像素点的RGBA值为(0, 0, 0, 255)
后来在
@Aura
师傅的帮助下,发现了其实图片中的每个像素的每个RGB的值都是RSA加密中的参数
因为我们之前得到了,hint.png
中每个像素的每个RGB值都在e
的取值范围中
然后hint.png
和task.png
的长宽是一样的,也就是说像素的个数以及RGB值的个数也是一样的,所以是一一对应的
因此我们可以联想到,把每个像素的每个RGB值都做一次RSA解密,hint.png
中的是e
,task.png
中的是密文c
最后把我们RSA解密得到的m
转为RGB值塞回图像中即可复原出二维码,扫码即可得到最后的flag:DASCTF{R54_W1th_Cv_1s_Fun}
最终的解题脚本如下:
|
|
[SOLVED] 题目名称 Boxing Boxer
题目附件: https://pan.baidu.com/s/195It-h7CBEXJ53-cV9MkoA?pwd=dahr 提取码: dahr
这道题的成功解决要感谢
@烛影摇红
师傅提供的解题思路
题面信息如下:
A boxing boxer unbox a box in which another box boxes little boxes and boxes and boxes and so on.
翻译:一位拳击手打开一个箱子,里面装着另一个装满小箱子的箱子,而这些小箱子里面又装着更多的小箱子,如此这般,层层叠叠。
解压附件压缩包,可以得到一个flag.gif
尝试分帧提取,可以得到504张图片
尝试用stegsolve
查看每张图片的LSB信息,并没有发现什么特殊的信息
然后尝试提取出GIF每一帧的间隔,可以得到如下内容,发现开头和结尾都是70,一共32+31=63
个
|
|
除去开头和结尾的70,发现中间的部分只有50和60,然后统计了一下一共441个,因为441=21x21
所以我们猜测可能隐写了一张二维码,我们尝试把50和60转为0和1,然后尝试绘制二维码,可以得到下面这些图片
转换出来后发现并不是二维码,并且尝试直接二进制转字符串也得不到什么有效的信息
|
|
后来在@烛影摇红
师傅的帮助下,知道了这题GIF隐写的关键
这里出题人是把二维码像素的坐标隐写到了GIF每一帧的偏移量
以及GIF每一帧图像的实际尺寸中了
因此,我们可以接着我们上面的分析,因为除去开头和结尾的70,中间的50和60一共有441个,又因为441=21x21
所以很明显暗示了我们是一个21x21
的二维码,因此我们可以编写以下脚本提取出隐写的坐标并绘制二维码
Tips:以下脚本需要在Linux中运行
|
|
运行以上脚本后,即可得到左上和右下两个二维码,分别对应一半的flag
最后把两段flag组合即可得到最后的flag:DASCTF{Unb0x_a_Fil3_t0_Get_a_Fl4g}
然后至于为啥右下角的二维码像素的坐标等于帧图像的实际尺寸+偏移量
,一开始我也没想明白
一开始我也是直接用帧图像的实际尺寸绘图发现出不来
我这里为读者提供了两种理解方法:
第一种理解方法就是,出题人出题的时候,肯定是预先已经确定了两个二维码的位置
第一个二维码没问题,直接用偏移量隐写就行,但是第二个二维码要怎么隐写呢?
还是可以用偏移量,但是由于第一个二维码已经确定了偏移量具体的值,所以这里,只能配合偏移量改变帧图像的实际尺寸
当然这里直接通过帧图像的实际尺寸来隐写也是可以的,直接让帧图像的实际尺寸等于二维码像素的坐标就行
第二种理解方法就是,我们仔细去查看那个identify
的输出结果
可以发现从第32个帧(下图中的下标是从0开始,所以下图中31代表第32帧)开始它的帧实际尺寸还是没变的
但是我们之前统计过,时间间隔为70
的帧只存在于前32帧
,因此这里也可以看出不是直接根据帧的实际尺寸隐写的
这时候可能就会联想到需要结合偏移量生成新的坐标
第三种的理解思路来源于@八神
:把每一帧gif的实际位置的左上角和右下角像素当成两个画笔
441帧之后画出来的图形就是这两个QR码(本题思路类似于ctfshow-misc入门题-aka赛博扶乩)
[SOLVED] 题目名称 Cyclone Joker
题目附件: https://pan.baidu.com/s/11DkgyTOBwumhHzIh5TKfNA?pwd=c2rb 提取码: c2rb
本题的成功解出离不开
@Aura
@zysgmzb
@八神
这几位师傅的帮助,师傅们都太强了!【膜拜】
题面信息如下:
W is for double.
解压附件压缩包,可以得到下面这张flag.jpg
的图片
用010打开图片,发现末尾藏了个rar,手动给它提取出来,发现rar是加密的,并且里面有个flag.bmp
猜测需要我们去那张flag.jpg
中寻找压缩包的解压密码
尝试用PS打开图片,仔细观察可以发现最后两列的像素明显与之前的像素不同,因此猜测有内容隐写在了这里
但是尝试了多种方法提取像素里的信息,都没有发现明显的压缩包密码
不知道这里提取像素中的信息是否需要用到题面中的 W is for double
,具体又该如何使用呢?
|
|
后来在@八神
的指点下,知道了JPG
图片还存在宽度(width)隐写
JPEG(jpg)图像的最小编码单元(MCU,Minimum Coded Unit)是 8×8 像素的块。换句话说,JPEG 压缩过程中会把图像划分为 8×8 的小方块进行处理。但如果宽度 不是 8 的倍数,JPEG 编码时通常会在 右边补足 至最近的 8 的倍数,以符合 8×8 MCU 处理的要求。
因此,我们尝试把上面那张JPG的宽度加到8的整数倍,即384
然后打开就能很清晰的看见后面隐藏的内容
发现主要是黑白像素块,因此我们写个脚本去提取里面的数据,并尝试转二进制为字符串
|
|
运行以上脚本即可得到rar的解压密码:ysiUDvXg(20~lPZi#2\*&)<,nb7m)x;ZBeZo+k*=t7npWGQ[w&s;#&yThd+PHnmAOd7bf3~~?)#0bg29+|F;E/u>Evv0oML:R$07
解压后可以得到下面这张bmp图片
尝试了常见的BMP的隐写后发现无果,然后发现BMP图片的宽度也不是8的整数倍
因此猜测可能和上面一样,存在宽度隐写
所以我们把BMP的图片也增加到8的整数倍,即在010中把宽度改为184
改完后就能清晰的看到隐写的像素
然后尝试用stegsolve去看看有没有LSB隐写的时候,发现了PNG文件的特征,只不过数据是逆置的
发现其实这里就是直接把PNG的十六进制数据转为bytes类型分三段隐写到RGB像素里了
因此我们写个脚本把数据提取出来就行,但是这里要注意每段数据前后有多余的\x00
|
|
运行以上脚本后即可得到下图
经过尝试发现这张图片其实也和上面一样,用width
隐写了内容(其实也可以说题面 W (width) is double
提示了这个)
因此我们还是一样,把这张PNG图片的宽度加到8的倍数。即把宽度修改为64
然后就可以看到如下隐写的内容
因此我们写个脚本去提取里面的数据,但是在提取的过程中发现因为宽度被修改了,CRC校验会报错
从而导致PIL和CV都无法识别这张图片,所以我们可以用PS重新导出一下这张PNG
重新导出后的图片就能被PIL正常识别了,然后我们看这道题的出题模板
很容易就能看出是安恒的题,因此猜测flag的前缀是DASCTF{
因此我们转二进制,然后和图片对应起来看,很容易找到对应的规律:黑色-0 白色-1
但是由于后面只有7列,因此我们需要在每一行的二进制数据前补0
最后写个脚本提取数据即可
|
|
运行以上脚本即可得到最后的flag:DASCTF{Now,_count_up_your_sins!}
这个flag翻译成中文就是:
现在,数一数你的罪过。
也许出题人也知道自己干了坏事,对那场比赛的选手心存愧疚吧
至此,这道题也是圆满结束了,最后还是再次感谢
@Aura
@zysgmzb
@八神
这几位师傅的帮助
[SOLVED] 题目名称 Steganography_challenges0.3(2025 西湖论剑全国总决赛)
题目附件: https://pan.baidu.com/s/1F6ZBdr-Nnhw0UmjF3_9DzA?pwd=f83m 提取码: f83m
附件已更新,原来的附件是损坏的,感谢
@1cePeak
师傅的提醒,要不然对着坏的附件,这题这辈子都做不出来了
本题的成功解出离不开
@1cePeak
师傅的帮助
解压附件压缩包,可以得到一个encrypt.py
和一张PNG图片,内容如下所示
|
|
发现是用弱密码简单加密了一下图片,然后我们用stegsolve打开图片可以发现图片存在LSB隐写
因此我们根据LSB隐写的内容写个脚本爆破一下密钥即可
|
|
运行以上脚本后即可得到第一段flag:DASCTF{01d0eed8-2e4b
,以及下一步的提示
并且可以用爆破出来的密码还原图片,还原后的图片如下
然后去网上搜DWT-QIM
相关的内容,可以搜到2024WMCTF-steg_allInOne这道题
发现整体思路和这道题差不多,猜测出题人的出题思路也是来源于这道题
然后我们010打开附件给的那张PNG,发现图片的末尾藏了一张base64编码后的图片
提取出来base64解码即可得到下图
参考上面2024WMCTF
那道题的wp,改一下提取水印的脚本
|
|
运行后可以得到如下内容,提示了我们一个key:79557c2d8f94
|
|
然后我们010打开提取得到的图片,发现有一块异常的IDAT chunk
尝试给他单独提取出来,发现按照2024WMCTF
的思路做得不到有用的东西
然后也尝试了异或密钥,也没有得到有效的信息,在@IcePeak
师傅的提醒下,查看了这块数据的大小
发现刚刚好是300kb,因此结合题目给了密钥,联想到可能是VeraCrypt加密容器
然后这里提取这块数据的时候要注意,不要把表示数据长度的那四个字节也提取出来
我们要从下图中高亮的位置后面开始提取
提取出来后,用VC挂载即可得到flag2:-4dc6-9152-ffe56b0f70b4}
综上,将得到的两段flag拼起来即可得到最后的flag:DASCTF{01d0eed8-2e4b-4dc6-9152-ffe56b0f70b4}
一些碎碎念:出题人最后套了一个VC加密容器确实会比较难想到,需要选手结合数据的长度和密钥进行联想
但也正是出题人这最后套了一下VC加密容器,让这道题更贴合“数据安全”这个分类吧
[SOLVED] 题目名称 扫一扫 (2025 安徽省赛)
题目附件: https://pan.baidu.com/s/1Xuo8ACEdarB8Z4D989Ytvw?pwd=hbph 提取码: hbph
解压附件压缩包,得到一张flag.png
,是张二维码,扫码后可以得到:123
010打开,发现末尾藏了另一张二维码还有一个加密的压缩包,二维码提取出来扫码后得到:qwe
用密码123qwe
解压压缩包,可以得到一个flag.pcap.pcapng
流量包文件
追踪流发现只有一个HTTP请求,但是没有看到响应
010打开流量包,发现里面有一串AES加密后的密文
用密钥123qwe
作为密钥去解密这段密文,可以得到一串Base64
Base64解码后可以得到一串32位的字符串,经过尝试发现是MD5
最后,用somd5反查MD5即可得到最后的flag:flag{you_are_the_best}
这道题本身出的没啥水平,最后一步反查MD5更是典中典(听说赛后才能查得到)
把它挂在这里也就是想记录一下这场比赛的某些主办方丑陋的行径
[SOLVED] 题目名称 discretedpoint
题目附件: https://pan.baidu.com/s/1V9ndTVFoiFWzdndj18N92w?pwd=8ppa 提取码: 8ppa
解压附件压缩包,可以得到下面这张比较杂乱的图片
010打开提示报错,发现是图片高度被篡改了,因此我们爆破一下图片宽高并修复,可以得到下面这张图片
可以看到一串红色的字符串:DL5aRqTz39
然后我们用PS打开分析这张图片,从像素点上看我们可以发现出题人应该是把两张图片合到一起了
合成的方法应该是提取一列像素,然后以一定的间隔合成,我们仔细观察下面的黑色像素,就可以知道间隔是3
因此我们可以尝试以3作为间隔,写个脚本提取一下上图中黑色像素构成的图像
|
|
运行以上脚本后即可得到下图
然后我们继续关注剩下的像素,尝试把像素点的RGBA值打印出来,看看是否有什么规律
首先我们观察图像的最后几列,发现彩色的像素数据到倒数第二列中间就中断了
因此猜测我们需要按列来遍历像素
然后当我们按列遍历像素,并把RGBA值转为十六进制打印出来的时候
发现了明显的压缩包的PK头(504B0304),因此我们写个脚本提取一下数据
|
|
运行以上脚本即可得到一个加密的压缩包,然后用之前得到的DL5aRqTz39
作为解压密码解压
即可得到最后的flag:DASCTF{8ea740d3c5fc1022739fdb6c055eb8cb}
[SOLVED] 题目名称 Ste9ano9raphy 6inary(2022CISCN 华南分区赛)
题目附件: https://pan.baidu.com/s/1-yjWWcdAwGmNDsGxAA8Gow?pwd=93bs 提取码: 93bs
本题的成功解出,离不开
@1cePeak
师傅的帮助
附件压缩包中有一张PNG图片和一个看起来是加密的wav文件
其中 996.png
那张图片的内容如下:
直接zsteg
扫一下,发现LSB隐写了第一段的flag:Part1:dasctf{D0_U_
然后经过尝试,发现了上面压缩包中的那个wav是伪加密的,010打开压缩包改一下加密位即可正常解压
然后在@1cePeak
师傅的帮助下,知道了这个WAV音频存在LSB隐写
因此写个脚本提取出其中的LSB数据后可以得到一个密码:password:NO996!
|
|
然后用上面得到的密码去Silenteye
中解密即可得到第二段的flag:like_996?}
最后,把两段flag合起来就是本题最后的flag:dasctf{D0_U_like_996?}
[SOLVED] 题目名称 环环相扣
题目附件: https://pan.baidu.com/s/1WRXY2Ki_BCZTlUnrZhnQWA?pwd=8jjq 提取码: 8jjq
本题的成功解出,需要感谢
@烛影摇红
师傅提供的思路
解压附件压缩包可以得到下面这张001.png
,其中有文字 无情哈拉少zbc
010打开图片,发现图片存在明显OurSecret
隐写的痕迹,并且末尾藏了一个压缩包
我们把压缩包提取出来后打开,发现里面有如下几个文件
我们从flag.pdf中可以得到flag1.zip的解压密码:3f9ed0gw2jk
``
解压后可以得到一个flag.txt
经过尝试,发现存在snow隐写,并且snow隐写的密钥就是之前的 无情哈拉少zbc
snow隐写提取得到的内容如下:
|
|
然后我们用随波逐流梭一把,发现博多baudot码
可以正常解码得到666C
开头的十六进制字符串
把解码后得到的十六进制数据转字符串即可得到第一段flag:flag{W0www
然后我们再把注意力集中到压缩包中那几个没有内容txt文件中,猜测是文件创建时间戳隐写
因此我们写个脚本,提取一下时间戳,并尝试通过某种方式转换到Ascii码上
|
|
发现提取出来的数据,最后两个字符是相同的,因此猜测可能是Base64编码中的==
按照这个想法,将每个字符的Ascii码后移一位即可得到:YUKWOU9sUYeWSU5qUUKOaA==
这里需要感谢@烛影摇红
师傅提供的思路,这里读取时间戳需要把压缩包中的.txt
文件先解压到一个目录中
然后再读取目录中所有.txt
文件修改时间的时间戳
|
|
读取出来后可以得到一串base64编码,解两次base64后即可得到密钥:key:S0PCc3c!
然后用这个密钥去解密Oursecret
即可得到flag2.txt
flag2.txt
中的内容如下:
|
|
猜测是和之前一样的博多码,因此我们把两段密文合起来,然后用随波逐流解密
|
|
最后把十六进制转字符串即可得到最后的flag:flag{W0www_M1sc_M@st3r333!!!}
[SOLVED] 题目名称 两个数 (2025 上海市赛 磐石行动)
题目附件: https://pan.baidu.com/s/1SF7RQzv6DWLGOdLf1S4g1g?pwd=8r8p 提取码: 8r8p
解压附件压缩包得到chal1.txt和加密的level2.zip
其中chal1.txt的内容如下:
1100001 000011 0111011 1110011 0100111 001011 0010111 1010111 100011 1000011 0010111 1001011 1111011 0111011 100001 100001 1001101 000011 1010111 1111101 0001011 1000011 0110111 110011 1111101 0000111 1000011 1100111 1100111 1010011 0010011 1111101 0010111 0001011 110011 1111101 0110011 1001011 0100111 1100111 0010111 1111101 0011011 110011 0110111 1010011 100011 100001 100001
发现是二进制字符串,但是长度并没有对齐八位,经过尝试发现是将原来的二进制反转了
写个脚本还原一下即可得到解压密码:C0ngr4tu1ation!!Y0u_hav3_passed_th3_first_l3ve1!!
|
|
level_2的压缩包注释中有提示:8bit
用上面的解压密码解压后可以得到chal2.txt和level_3.zip
其中chal2.txt内容如下:
01111011011110110111101101111011011110111100100101011001100100010101100101110011000001011101100110001001111100110011100101011001001100010000010100110011111010011101000100000101001100111001000101101001101100011011000101111001000001010011001110010001011110011110100100000101010101011111001101100001
结合之前得到的提示,经过尝试发现把0和1互换,然后字符串reverse一下再解码即可得到解压密码:y0U_hav3_arriv3_th3_sec0nd_1evel!!!!!
也可以写个脚本处理
|
|
用上面的密码解压后可以得到chal3.txt和level_4.zip
其中chal3.txt的内容如下:
01010110 01110101 01111000 01110010 100000 01111001 100010 01011010 01010100 100000 01011010 01111000 100010 01100111 01110101 100001 01011010 01100100 01111100 01100011 100010 01110101 110001 110001 110001 110001
与此同时,压缩包的注释中也提示了我们格雷码
经过尝试发现,把每组二进制按2位一次,转为格雷码后,再组合起来转ASCII即可得到解压密码:Welc0m3_T0_l3ve1_thr3e!!!!
|
|
level_4.zip中的注释内容如下:
解压后可以得到chal4.txt和last_level.zip
其中chal4.txt中是长度为360000的01字符串
因为360000刚刚好是600的平方,因此猜测可能是二维码
写个脚本把0和1分别转为黑白像素即可得到下图
|
|
扫码得到解压密码:y0u_g3t_th3_l4st_1ev3llllll!!!!!
解压后得到一堆文件名为1.x
或者0.x
的文件,并且每个文件中的数据都是\x00
因此猜测x就是0和1在原始文件中的位置,
我们写个脚本还原一下然后转字符串即可得到最后的flag:flag{92e321a1-43a7-2661-afe4-206581b782f3}
|
|
[SOLVED] 题目名称 一闪一闪亮晶晶
题目附件: https://pan.baidu.com/s/19y1jth5uG7QRGqHrOREWgg?pwd=qrp6 提取码: qrp6
本题的成功解出,需要感谢
@烛影摇红
师傅提供的思路
题目附件给了一张 GIF,直接逐帧分割并提取帧间隔
|
|
观察了一下上面得到的 Hint,发现它们在键盘上是连续的,猜测可能是用键盘上的位置传递了什么信息
其中有几个很容易看出来,但是有俩不知道对应的是什么字符,因此可以写个脚本爆破一下
|
|
得到提示:dotcode,去网上搜了一下发现 dotcode 大致长下面这样
然后我们再回头看 GIF 分出来的那几张图片,发现每个图片中都有一个黄色区域
并且可以发现它是两种样式交错出现的,所以我们需要写个判断去获取中心像素的坐标
一开始以为只要提取出所有图片最中心那一个像素然后绘图就行,但是看点阵密度感觉不太对
因此尝试把所有图片最中心那个 4x4 的区域都提取并绘制到一张图片中了
|
|
最后在线网站识别即可得到最后的 flag:flag{b829c3a6a06b9a29c9e8ae5037d826eb}
题目名称 Just Not Good
题目附件: https://pan.baidu.com/s/12j_kEm7Vw0PETvJ8GSiC8g?pwd=u7q6 提取码: u7q6
解压附件压缩包可以得到一个file
,但是打开发现有PNG的文件头,但改后缀为.png
后图片无法正常显示
在010中打开图片,发现PNG头还在,但是尾部已经损坏了,并且发现里面由一大串02 1A 00 00
因此猜测是异或了02 1A 00 00
,因此我们用CyberChef异或一下
异或完后下载到本地,再用010打开,PNG头坏了也没事
尝试foremost一下,发现可以得到下图
其实我们在010中爆搜也能找到JPG的头,因此也可以手动提取
得到上述图片后,用010改一下图片的高度,即可得到最后的flag:DASCTF{fab6ce57e3131f1635b0c953debe67ac165f}
题目名称 one (2024 古剑山)
题目附件: https://pan.baidu.com/s/1iSL1P1Z1Oa8WB0tXRWjSmg?pwd=vc66 提取码: vc66
题目附件给了一个cnc.txt
,内容是10000行每行114个字符的十六进制数据
部分内容如下:
|
|
发现每行长度都一样,然后结合one联想到可能是一个密钥加密的,一开始猜测是OPT或者MPT但是发现做不出来
题目名称 pingping (2024 蓝桥杯全国总决赛)
题目附件: https://pan.baidu.com/s/1nE4F_kVzgRaDulA0xOjiWQ?pwd=33tm 提取码: 33tm
题面信息如下:
你是一个网络安全管理员,负责监控公司内部网络的安全性。
最近,你收到了关于内部网络存在异常 ICMP 流量的报告。
你决定分析这些流量,以确定是否将公司的机密信息传输到了外部。
题目附件给了一个流量包文件,首先看了HTTP流量,发现没有什么关键信息
结合题目名pingping
,猜测关键信息在icmp
协议的流量中
因此结合过滤器查看,发现果然有关键信息,如下图中压缩包的PK头(504B0304)
因此我们尝试使用tshark
把不同icmp.idnt
流量包的数据都提取出来
|
|
数据提取出来,解码Hex可以得到多个zip压缩包,解压后可以得到多张PNG图片
经过比较MD5值去重后,一共可以得到下面这25张大部分像素为蓝色并且大小为20x20
的PNG图片
这里其实只要提取
icmp.ident == 0x522e
的数据包就行,直接可以提出来所有的图片
每张图片的文件名长度都是32,因此猜测可能是MD5的哈希值
经过尝试发现,其实就是字符1-25的MD5哈希值,因此我们可以把图片重命名一下
|
|
观察到某些图片并不是全是蓝色像素(0,0,255)
,因此写了个脚本提取像素点并转为Ascii码
|
|
运行以上脚本后得到如下内容(我打印输出了RGB值、Ascii码转换后的字符、像素的坐标):
|
|
结合字符查看得到的字符串,很明显flag就是藏在这里了,但是不知道flag具体的排列规律
结合题面的信息,猜测肯定是有内网的主机向外网通信了,使用过滤器过滤一下
发现ip地址为10.211.55.7
的主机嫌疑最大
然后发现10.211.55.7
主要和185.125.188.55
和91.189.91.43
这两个主机通信了
并且通信的数据包还都是TLSv1.3
加密的,因此猜测需要我们解密这些数据包才能得到flag的排列规律
题目名称 tag (2023 福建省职业院校技能大赛高职组信息安全管理与评估)
题目附件:https://pan.baidu.com/s/1TJrAnVSDirjdl3xk6wJRHA?pwd=ee6p 提取码: ee6p
参考链接:https://blog.csdn.net/m0_45155797/article/details/135027395
题目的内容就是要从下面这张图片中找出evidence2
的字样
已经知道答案,但是不知道这个evidence2
被出题人藏哪了,感觉是内幕题。。
题目名称 Sakura
题目附件: https://pan.baidu.com/s/1qQ94akilsReXwJeAgjltjg?pwd=s9dh 提取码: s9dh
题面信息如下:
This is my favorite Sakura photo, There is also a secret hidden in it. I need to make a backup.
题目附件给了一个secret.pcapng
的流量包文件,打开发现主要是USBMS流量(U盘流量)
然后翻看一下流量包发现其中分段传输了一张很大的PNG图片,因此尝试写个Python提取出图片的数据
|
|
图片最后一段的数据需要手动提取一下,把所有图片数据都提取出来后可以得到下图
图片的像素看起来很复杂,尝试了zsteg
和stegsolve
,没有得到什么有效的信息
也尝试了单图盲水印,也是没有得到什么有用的信息
拿工具统计了一下像素的频次,发现纯黑色和纯红色的像素异常的多
写了个脚本输出了一下这两个像素的分布
|
|
题目名称 1.png (2025 交通运输行业大赛)
题目附件: https://pan.baidu.com/s/1kNFzj0KPw8WhWP0Q9v5GYA?pwd=9y9f 提取码: 9y9f
解压附件压缩包,可以得到下面这张PNG
010查看,发现图片末尾藏了另一张PNG图片
提取出来后可以得到下面这张PNG
尝试了zsteg和stegsolve,没有发现啥明显的信息
尝试用PS打开图片查看,发现像素的排列存在一定的规律
图中蓝色像素点所在行应该就是隐写内容的像素
写了个脚本统计了一下像素,像素要么是只有蓝色通道是有值的,否则RGB值就是(0,0,0)黑色
因此猜测出题人是通过蓝色通道隐写了数据
同时也尝试输出了一下存在隐写的像素在图中的分布,发现主要是一行一行的(下图中白色的就是存在隐写的像素)
然后写了个脚本统计了一下像素蓝色通道的数值范围,发现是在0~255之间(不连续)
|
|
然后也尝试了一下提取一行的像素的最低位转为二维码,因为 1024 = 32 x 32
|
|
但是发现转换出来的图也并不是二维码
题目名称 dd
题目附件: https://pan.baidu.com/s/1dprb5uPFR310ofJU6xFKrA?pwd=a1e5 提取码: a1e5
附件给了一张dd.png,用exiftool看一下发现是apng
用 apngdis_gui 跑一下,分割后可以得到28张PNG图片
尝试用zsteg、stegsolve、盲水印提取工具分析了一下得到的PNG图片,没有得到有效的信息
题目名称 ezpng
题目附件: https://pan.baidu.com/s/1TfkbCACGFVLp6cWSlskP8g?pwd=jbgi 提取码: jbgi
题目附件给了一个pocky.txt,内容大致如下
用CyberChef中的From Binary解码后可以得到下面这张JPG图片
010打开发现末尾藏了一个zip压缩包
提取出来后得到password.png和加密的cookies.zip
其中password.png的数据被逆置了,而且删除了PNG头
尝试修复后可以得到下图:
猜测需要从上图中获取压缩包的解压密码
cookies.zip中的内容如下:
题目名称 itch+years
题目附件给了一个 7z 压缩包,手动解压几个发现是 7z套娃,并且发现里面的文件名都是 6 位大小写字母
于是写了个脚本解套,发现 txt 中的内容一共有以下七种情况
|
|
结合题目名的意思七年之痒,猜测最后的 flag 肯定和数字七有关了,尝试了转七进制但是依旧无果
|
|
题目名称 魔法少女的消失术
题目附件: https://pan.baidu.com/s/1m7JegAUuTKKc30xUKSMwzQ?pwd=7kw9 提取码: 7kw9
题目附件给了一个 encode.mat
和 original.jpg
尝试写了个脚本读取了一下 .mat 文件中的数据,发现一共有三个字段,其中 FAO 字段是复数(存在虚部)
因此猜测是用了频域变换,并且很大概率是傅里叶变换(FFT)
|
|
题目名称 double_phantom
题目附件: https://pan.baidu.com/s/1-9eWVITCh3oxKZfSSfF0FQ?pwd=scnb 提取码: scnb
题面信息如下:
这张看似平静的风景图中隐藏了一个秘密。你能穿透表面的宁静,找到被分割的Flag吗
题目附件给了一张 double_phantom.png
,zsteg 扫一下发现 b2,r,lsb,xy
中有东西
导出来后发现有一段base32编码的字符串:MZWGCZJANBZSA3DSOQ======
base32解码后得到:flae hs lrt
题目名称 custom_firmware
这道题已经被赛题复用了两次
题目附件: https://pan.baidu.com/s/12XUlgWCeuM8dPJZhNlVS9g?pwd=j9u5 提取码: j9u5
题面信息如下:
这个文件经过了好几重加密,要把里面的内容找出来可不容易。经过排查发现加密步骤有字符串分割、字符替换、异或加密、打乱顺序。
题目的附件很简单,就没多少数据
|
|
题目名称 Chaos and Torus
题目附件: https://pan.baidu.com/s/11NwSPtcUEqk81m1-45Mr3g?pwd=2ihu 提取码: 2ihu
附件给了一个 cat.gif,gif 的内容表达的是 Aronld 变换,尝试分帧,发现一共有 70 帧
然后尝试提取了一下每帧的帧间隔和偏移量,但是没有发现什么有用的信息
题目名称 qrxor
题目附件: https://pan.baidu.com/s/1h8UsZXYmPvmoLG6DG4sOpA?pwd=g2vw 提取码: g2vw
题目附件给了下面这张被污染了的二维码
尝试手动修复了一下,并用红色标注了不确定的像素点
然后尝试搓了个 Python 脚本爆破不确定的位置,但是也没有爆破出来
|
|
题目名称 MIW
题目附件: https://pan.baidu.com/s/1tAq558vRuyap_P4ZDS4F9g?pwd=3bue 提取码: 3bue
题目附件给了一个 npbk 文件(夜神模拟器的磁盘文件)
由于我这电脑上没有安装夜神模拟器,所以就只能用常规方法先进行取证
首先用 7z 先解压,可以得到一个 vmdk 文件,然后这时候我们就可以用 DiskGenius 挂载了
挂载后尝试恢复删除的文件,可以得到如下关键信息:
发现有个 flag.jpg 和 g-a-l-f-gpj.aze,然后发现 flag.jpg 也是可以直接提取出来的
并且还可以在 PNG 目录中发现如下这张图片:
目前得到的两段密文:
OuzOzRy2XCH17sNCDownEpwIPjZ3HSfJ/EY48+FqM+nXQ5497BFOwA==
XhyDfF1j53ZPe3J8wtfp+1G4b2M4verNcvANyQLpLmZN+fDOyGa3h6kmerc84xb40mFVdJex/hw+Vm9gqy/Bbw==