WP - VNCTF 2021 - MISC

MISC

冰冰好像藏着秘密

image-20210401161949646

打开rar提示错误,考点为——RAR伪加密。

RAR伪加密

RAR文件结构:

RAR 5.0签名由8个字节组成:

0x52 0x61 0x72 0x21 0x1A 0x07 0x01 0x00

RAR 4.x 签名由7字节组成:

0x52 0x61 0x72 0x21 0x1A 0x07 0x00

image-20210401163956273

第24字节此处为0,没有加密;为1,则rar被加密。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('FFT/FFT.png', 0) #直接读为灰度图像
f = np.fft.fft2(img) #做频率变换
fshift = np.fft.fftshift(f) #转移像素做幅度谱
s1 = np.log(np.abs(fshift))#取绝对值:将复数变化成实数取对数的目的为了将数据变化到0-255
plt.subplot(121)
plt.imshow(img, 'gray')
plt.title('original')
plt.subplot(122)
plt.imshow(s1,'gray')
plt.title('center')
plt.show()

happynewyear

2021-04-01T09:16:17.png
蓝色的为谢赫密码,横竖线为中文代码。
2021-04-01T11:32:47.png
2021-04-01T11:30:51.png
压缩包密码为f87840bdddcc01e4,解开压缩包。

stegpy工具

stegpy pic -p
输入密码
本题使用脚本进行爆破图片的密码。

Do_you_like_Rhythm_Doctor

from Crypto.Util.number import *
data = open('main.rdlevel', 'r', encoding='UTF-8')
true = 1 #用于对true赋值,保证程序正常运行。因为字符串中存在ture,使用eval时会把ture当做变量。
flag = ''
row = {0:"", 1:"", 2:"", 3:""}
while 1:
    s = data.readline()
    if not s:
        break
    s = s.strip('\n')
    if not "pulseType" in s:
        continue
    dic1 = eval(s[:-1]) #将每行数据转化为字典,由于每行最后均有逗号,故为s[:-1]
    if dic1['pulseType'] == 'Square':
        row[dic1['row']] = row[dic1['row']] + '0'
    else:
        row[dic1['row']] = row[dic1['row']] + '1'
print(row)
flag = int(row[0] + row[1] + row[2] + row[3], 2)
print(long_to_bytes(flag))
#{0: '011001100110110001100001011001110111101101111101', 1: '010101110011001100110001011000110110111101111101', 2: '011011010110010101011111010101100010011001111101', 3: '010011100101111101000011010101000100011001111101'}
#b'flag{}W31co}me_V&}N_CTF}'


interesting_fishing

crazyman_army是某安全公司的研究人员 这天他的其邮箱里发现了一封奇怪的邮件 你能帮助他找到其隐藏的信息吗
附件是第一部分的flag 图片是第二部分的flag 最后flag为 第一部分+第二部分(vnctf{*})

由提示知道,文件为邮件,将bin改为eml。
将附件和图片保存下来后,无更多信息,将eml文件使用notepad打开后,分别对base64解码。
2021-04-01T13:36:34.png
根据文件名猜测使用oursecret加密,尝试解密。
2021-04-01T14:35:07.png
打开vs项目工程,生成项目时报错,
2021-04-01T14:38:24.png
从原压缩包捣鼓出来Browse.db文件后,看到加密文件,u-65432?此为RTF文件格式。

RTF格式中使用uN?表示一个unciode字符。u后跟一个带符号的16位十进制整数值接一个占位符,用?表示。N大于32767的话,则表示为负数。解混淆示例如下:
L"h" == 0x0068 == -(-0x0068) == -(0xFFFF+1-0x68) == -65432=u-65432?
decode.py:
a = [xx]
flag = ""
for i in a:
    flag += chr(0xFFFF + 1 - int(i))
print(flag)

又得到一个压缩包,无法使用Advance Archive Password Recovery爆破密码,使用Accent RAR Password Recovery破解密码。
没什么思路,对word文档再解压,发现hideinfo.xml文件,010editor打开后发现存在零宽度字符隐写。
2021-04-04T14:57:53.png
网站解密后,得到flag。

本文链接:

https://littlewhite.fun/index.php/343.html
1 + 6 =
快来做第一个评论的人吧~