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
赛后主办方给出了本题考察的知识点:

附件给了两个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] 题目名称 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}
|
|
题目名称 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}


题目名称 Fingers_play (2024 ISCC 个人挑战赛)
题目附件: https://pan.baidu.com/s/1wSR_G9N-5739BeJgP4zouQ?pwd=6dqv 提取码: 6dqv
题目名称 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被出题人藏哪了,感觉是内幕题。。
题目名称 破译行动 (2024 ISCC 博弈对抗赛)
题目附件:https://pan.baidu.com/s/1GAhnDyy_2yplJeWibRsadg?pwd=py7u 提取码: py7u
赛后主办方给出了本题考察的知识点:

附件给了一张图片和一个TXT,其中TXT内容如下
不要忘记我们的接头暗号:58,20,36,40,32,60,48,88,42,46,70,21,42, 6,51,71,40,14,30,4,37,25,28,7,39,46,20,33

图片打开内容如下

用010打开发现图片末尾藏了以下数据,并且提示了后面那串base64是加密后的
IHaveEncryptedTheSignalToPreventLeakage:U2FsdGVkX18SCg3hRbbWKiIXLrevGD0Sv0aCNfGr5YEBzPi8f7oWRq5vQ5QziXjuYrfShzuxlEQe9qAN0SYZUU+cQLB3wREFNCyhjvhHTlt3dmTjDFElG3okDzg3Eu4Xj+2AINbme9zgOjdsJgpVZg==

解密需要密钥,但是找不到密钥,猜测会和图片中的那个时间有关系,但是不知道具体什么关系。。
后来听去了线下颁奖的师傅说,主办方在赛后总结的时候说这道题好像和具体的经纬度有关系
因此去网上搜了天安门广场的具体经纬度如下:
|
|
题目名称 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,感觉不存在LSB隐写
也尝试了单图盲水印,没有得到什么有用的信息
题目名称 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中的内容如下:

Lunatic