2023"安洵杯"第六届网络安全挑战赛-Misc WP

发布时间 2023-12-25 19:52:44作者: 清纯少女小琪

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文件提示

根据这个提示在加上daco​ng_l​ike_​list​en里面好多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')

得到

然后字典爆破密码,一样可以得到密码