2023"安洵杯"第六届网络安全挑战赛-Misc WP
dacongのsecret
题目
我的解答:
题目给出一张png图片和一个加密压缩包,压缩包里面还存在另一张jpg图片
看名字就知道是盲水印。由于压缩包里的图片提不出来,因此是单图盲水印,我们使用工具得密码
d@C0ng 1s cUt3!!!
解压得到另一张图片,010分析一下得到一串字符
一眼丁真压缩包逆过来了,我们给他反转一下
提取出来后需要密码,接下来我们寻找密码。。。分析原本第一张图片发现有两个IDATx,删除第一部分保存。
然后爆破宽高(自己试着估计宽高就行,数据不唯一)得到密码
然后解压之前提取出来的压缩包里的文本得到
一眼base64隐写,B神工具直接梭
最后用jphs(参考:https://blog.csdn.net/qq_53079406/article/details/124578357)解出flag
得到
flag{d@C0ng_1s_r3@lIy_Re@iLY_Cute}
dacongのWindows
题目
我的解答:
一个取证题目,R-STUDIO恢复一下
发现一个flag3.txt,打开得到
U2FsdGVkX18M+E34cKJlmTU3uo1lHqjUQhKPTBGJiMjg4RWX6saTjOJmLU86538e
AES解码,但需要密码,我们需要找到密码。。
根据文件描述提示可知是注册表,利用vol输入指令:
python vol.py -f dacong.raw windows.registry.printkey得到一串字符
d@@Coong_LiiKEE_F0r3NsIc
猜测是AES密码,解码得到
这个一看就是flag最后一段,根据文件名flag3猜测还有flag1,flag2,我们继续分析取证出来的信息
我们看到还有一个压缩包
我们把压缩包恢复出来然后解压,但是解压出现问题
我们使用vol给整下来得到
很明显会发现是无密码的snow隐写,直接解码得到的二段flag:
_tHE_Dddd
还剩最后一段,继续找
txt文件提示
根据这个提示在加上dacong_like_listen里面好多wav文件,听着像sstv。但这么多的文件总不能一个个试着听吧。。。。
我们搜索一下上面txt文件里面提到的???music,搜索这个歌名发现一个可疑之处39,那么我们就找到第39个wav听一听
使用手机打开robot36得到第一段flag
flag{Ar3_Th3Y
拼接得到最终flag
flag{Ar3_Th3Y_tHE_DddddAc0Ng_SIst3Rs????}
Nahida
题目
hi.txt
初次见面,我已经关注你很久了。我叫纳西妲,别看我像个孩子,我比任何一位大人都了解这个世界。所以,我可以用我的知识,换取你路上的见闻吗?
wink!
我的解答:
将第二个文件010分析,发现是逆着的jpg
右键导出16进制
然后得图片
我们根据hi.txt里的wink!翻译为:眨眼示意(和眼睛有关而且看图片小女孩在眨眼睛捏。。)
可知是silenteye解码,而密码猜测就是题目名字Nahida
d0g3{Nahida_is_the_best_in_the_world!}
疯狂的麦克斯
题目
我的解答:
把麦克斯的称号文件零宽隐写得到密码
解压嗨.zip,得到一个docx文件,改后缀为zip得到一个txt文件
末尾有
ROT13解码得到(随波逐流凯撒解码也可以,实际上是把零宽得到的密码换成整数就是偏移量。但随波逐流直接就出来了哈哈。)
既然末尾是凯撒偏移,那说明整个文本都偏移了。对列表同样使用ROT13解码
根据题目描述麦克斯MAX(最大值),只要找到列表中最大值就是压缩包密码,遍历得到456788P
import re
def extract_numbers(s):
# 使用正则表达式提取数字
return [int(num) for num in re.findall(r'\d+', s)]
def find_max_in_list(lst):
max_val = -1 # 初始化一个很小的值
for item in lst:
numbers = extract_numbers(item)
if numbers: # 如果在字符串中找到了数字
max_val = max(max_val, max(numbers))
return max_val
lst = ['71132E', '328051N', '248199O', '96369v', '216076R'...]
print(find_max_in_list(lst))
'''
遍历数组中的每个字符串。
使用正则表达式或其他方法提取每个字符串中的数字部分。
将提取的数字转换为整数或浮点数。
比较这些数字并找出最大值。
'''
根据麦克斯的称号文件里面信息:
都看到这里了!
最后的密码是 某个值的base64+麦克斯的称号 哦
得到密码需要base64加密一下
解压得到
D0g3{Th1s_REA11Y_MAX_F1A4_GGB0ND}
或者使用脚本对列表base64加密(推荐此方法!)
import base64
lst = ['71132E', '328051N', '248199O'... ]
# base64加密函数
def encrypt_string(string):
encoded_bytes = base64.b64encode(string.encode('utf-8'))
return encoded_bytes.decode('utf-8')
# 打开自定义文件
with open('output.txt', 'w') as file:
# 遍历列表中的每一个值
for value in lst:
# 加密信息并写入文件
encrypted_value = encrypt_string(value)
file.write(encrypted_value + '\n')
得到
然后字典爆破密码,一样可以得到密码