Misc做题记录1
[第七届山东省大学生网络安全技能大赛]神秘的文件
解题
附件给了flag.zip和logo.png,打开flag.zip发现里面也有一个logo.png,而且logo.png的CRC32值相同,推测需要进行明文攻击

打开word文档先看看有没有隐藏文字,调整颜色后发现一个假flag,排除word文档方向

更改扩展名为zip扔进随波逐流,发现存在一个flag.txt,直接顺着路径找过去

看着像base64,解码一下看看

拿到flag
Ex
flag告诉我们docx是个zip文件,其实所有的office文档都可以改成zip扩展名并且解压出来,这为隐写提供了巨大的空间,无论是像本题在多个文件夹中藏flag文件,或者是在众多xml文件中的某一个里藏flag字段
随波逐流属实是好东西
[BugKuCTF]图穷匕见
题如其名,附件拿到一张图,根据题目名字考虑是不是改过宽高,但是是jpg文件,堵死了这条路,放进随波逐流检查一下,看到大量坐标类型的数据被写在文件尾后面

用随波逐流一键或openCV画图

[宁波天一永安杯-2023]zip
拿到附件发现zip描述中有提示

告诉我们密码是只由0和1组成,少于九位,根据这个信息,可以选择编写字典或采取自定义字符集爆破解压压缩包
得到密码01001100
[宁波天一永安杯-2023]BeautifulImage
拿到附件,是png图片,走一遍图片隐写的基本流程
元数据没有信息
宽高也没有被修改过
binwalk没有发现其他信息
尝试一下LSB隐写思路,在顶部发现一串疑似base64编码的字符,提取出来尝试解码

得到flag
[BugKuCTF]普通的二维码
附件解压得到一个二维码,先扫扫看,果然没东西
放进010看看,在文件尾发现一块纯数字

后面的xjseck经过搜索可知是题目作者的签名,能搜到他的博客
将数字部分进行一键解码得到flag

[BugKuCTF]不简单的压缩包
拿到附件只有一个加密压缩包,没有头绪,先放010里看看有没有在头尾藏提示
但是没有,只能再binwalk一下,发现有两个压缩包,直接foremost提取出来![[Pasted image 20241217195621.png]]
尝试从小的没有flag文件的压缩包入手,没有提示只能尝试爆破
发现爆破成功,密码是0
得到这么一段内容

翻译过来是

简要计算可以知道暴力破解这个长度的密码是不可能的,只能猜想,是否是单一字符五十个
手搓一个字典试试
发现行不通,考虑字母是否在考虑范围内,把大小写字母加进去再试一次
是五十个a
![[Pasted image 20241217204142.png]]
解压出flag.swf 不清楚文件类型,丢进010和IDA都看不出来什么,查阅大佬wp发现这个是flash的文件,需要使用JPEXS Free Flash Decompiler来反编译得到flag 下面贴一下大佬的解法


解码后得到flag
原文地址不简单的压缩包 BugkuCTF-杂项-MISC-CSDN博客
另外参考这份大佬的wp,上面在翻译txt内容时出现了问题,多了“数字”两个字,导致在思路上一开始没有考虑字母
本题确实是不简单的压缩包,首先需要解题者能想到对压缩包进行binwalk并且进行文件分离,其次要想到爆破密码,然后要基于事实敢于猜想密码格式,因为50位字符的密码是不可能爆破的,最后要有对flash的swf格式文件有所了解,能扩展出用正确反编译它得到flag的思路,这种格式的文件用IDA和010都没有有效作用
[BugKuCTF]QAQ
题目提示有一段像base64编码的字符,解码一下试试
发现解不出来,只能往千千秀字的字母加密方向去想,然后还是解不出来,只能先放着
再考虑题目附件QAQ,没有给扩展名,先放010里看看
出现了QAQ.py和LordCasser cipher.txt等内容,怀疑这是个pyc文件,反编译一下试试,得到这么一段代码
def encryt(key, plain):
cipher = ''
for i in range(len(plain)):
cipher += chr(ord(key[i % len(key)]) ^ ord(plain[i]))
return cipher
def getPlainText():
plain = ''
with open('plain.txt') as f:
while None:
line = f.readline()
if line:
plain += line
continue
break
return plain
def main():
key = 'LordCasser'
plain = getPlainText()
cipher = encryt(key, plain)
with open('cipher.txt', 'w') as f:
f.write(cipher.encode('base_64'))
if __name__ == '__main__':
main()
根据代码写一个解密脚本,不知道cipher.txt和plain.txt的内容,干脆把解不出来的那段字符写成cipher.txt和plain.txt
再尝试运行代码
发现还是不行,这时想起开头注释说版本是python3.6,而我的IDE版本是python3.12
想办法运行之后输出结果为YOU ARE FOOLED THIS IS NOT THAT YOU WANT GO ON DUDE CATCH THAT STEGOSAURUS
STEGOSAURUS经过了解是pyc隐写所用的脚本,下载这个脚本尝试运行解密
得到flag
本题引入了pyc隐写这种隐写方法,
[BugKuCTF]蜜雪冰城~
附件给了三个文件,python脚本根据名字推测是一个加密脚本,另外两个还需要打开研究
from PIL import Image
f = open("你爱我呀我爱你.txt", 'w+')
im = Image.open('flag.jpg')
width = 10
height = 20
rgb_im = im.convert('RGB')
for i in range(width):
for j in range(height):
print(rgb_im.getpixel((i, j)))
print(rgb_im.getpixel((i, j)),file=f)
f.close()
脚本是读取flag.jpg的部分rgb信息写入到txt中
从给的图片上下手
属性里写了白:0,黑:1,应该是要根据像素颜色的数据来转换成01画图
转到txt上来,是白色和黑色的rgb值,写一段脚本完成这个过程,看到有400个rgb数据,所以输出成20*20的正方形
with open("你爱我呀我爱你.txt", 'r', encoding='utf-8') as source_file:
lines = [line.strip() for line in source_file.readlines()]
converted_lines = []
for line in lines:
if line == "(255, 255, 255)":
converted_lines.append('0')
elif line == "(0, 0, 0)":
converted_lines.append('1')
matrix = []
for i in range(0, 400, 20):
row = ' '.join(converted_lines[i:i+20])
matrix.append(row)
with open("result.txt", 'w', encoding='utf-8') as result_file:
for row in matrix:
result_file.write(row + '\n')
画出来图显然不能用

考虑是不是二进制码,果然有东西

告诉我们用寂静之眼,后面方括号应该是密码,给了一个百度网盘的链接,转过去看看
下载到一段mp3,听听看,蜜雪冰城宣传曲,最后面藏了一段长短不一的嘟嘟响,放auducity里看看可以看出来是摩斯电码,对表解码
--/.--./...--/.../-/./--./---/../.../../.-../---/...-/./-.--/---/..-/-.--/---/..-/.-../---/...-/./--/.
提示换用MP3STEGO
解出flag

浙公网安备 33010602011771号