Misc

一个flag不是标准格式

一个工具题

一个脑洞题

很难评价这次Misc

hacker

看看流量,发现就是写了个简单的加密逻辑,只要读懂了之后解dns数据就可以了

出题人不知道是故意的还是怎么的这个加密逻辑会导致没62位丢失一位,这直接先补个1然后再爆破就可以了

password为admin密码,在tcp.stream eq 2里可以找到

加密逻辑也在tcp.stream eq 2里可以找到

转换脚本:

password = '3861336536383463393233623736336432353263663165383733346137613239'
cipher = '79227024716c7522787370254c777230667673222570247b766773226326711d7b357226771575227a7372237677702573611f372570317b767277207620611479207024777b60247e6674231a626727666171372570317f766773207620167879226731756c60206d75703670754e'
res = ''
for i in range(len(cipher)):
    res += hex(int(cipher[i], 16) ^ int(password[i % len(password)], 16))[2:]

print(bytes.fromhex(res).decode())

#ACCAGTAAAACG{AATTCAACAACATGCTGC$CTACA-AACAAAAACAAT-TCATCAACAAAS-AACAACTGGTGA-TTCTTCTCATGATGAAA$AACTTCTTCTGCTGC}

这里的两个$和一个S的就是丢失的字节

观察后发现大概是某种进制,并且是ACGT的顺序

解密脚本:

table = 'ACGT'
dic = {'AAA': 'a', 'AAC': 'b', 'AAG': 'c',
       'AAT': 'd', 'ACA': 'e', 'ACC': 'f', 'ACG': 'g', 'ACT': 'h', 'AGA': 'i', 'AGC': 'j', 'AGG': 'k', 'AGT': 'l', 'ATA': 'm', 'ATC': 'n', 'ATG': 'o', 'ATT': 'p', 'CAA': 'q', 'CAC': 'r', 'CAG': 's', 'CAT': 't', 'CCA': 'u', 'CCC': 'v', 'CCG': 'w', 'CCT': 'x', 'CGA': 'y', 'CGC': 'z', 'CGG': 'A', 'CGT': 'B', 'CTA': 'C', 'CTC': 'D', 'CTG': 'E', 'CTT': 'F', 'GAA': 'G', 'GAC': 'H', 'GAG': 'I', 'GAT': 'J', 'GCA': 'K', 'GCC': 'L', 'GCG': 'M', 'GCT': 'N', 'GGA': 'O', 'GGC': 'P', 'GGG': 'Q', 'GGT': 'R', 'GTA': 'S', 'GTC': 'T', 'GTG': 'U', 'GTT': 'V', 'TAA': 'W', 'TAC': 'X', 'TAG': 'Y', 'TAT': 'Z', 'TCA': '1', 'TCC': '2', 'TCG': '3', 'TCT': '4', 'TGA': '5', 'TGC': '6', 'TGG': '7', 'TGT': '8', 'TTA': '9', 'TTC': '0', 'TTG': ' '}
cipher = 'TCATCAACAAAT'
plain = ''
for i in range(0, len(cipher), 3):
    plain += dic[cipher[i:i+3]]
print(plain)

最后对位置的两个位进行爆破即可

阿尼亚

图片尾的冗余数据解hex之后可以察觉是有种编码的感觉,于是用cyberchef爆破一下可以得到密码

然后根据文件名提示去使用在线工具得到压缩包密码

然后解开压缩包,里面是Decabit编码,解一下就可以了

X光的秘密

简单了解后写脚本提取下图片,然后发现17 18 19三张图是几乎一模一样的,根据位深度为8,脑洞一下可能是图片合成,所以把最后三张图分别作为rgb填充进一张新图,再lsb就可以发现flag图片

exp:

import SimpleITK as sitk
from PIL import Image
import pydicom
import numpy as np
import cv2

def loadFile(filename):
    ds = sitk.ReadImage(filename)
    img_array = sitk.GetArrayFromImage(ds)
    frame_num, width, height = img_array.shape
    return img_array, frame_num, width, height

def showImage(img_array, frame_num):
    img_bitmap = Image.fromarray(img_array[frame_num])
    return img_bitmap

filename = 'task.dcm'
file = loadFile(filename)
for i in range(20):
    img = showImage(file[0], i)
    img.save('./file/'+str(i)+'.png')

img1 = Image.open("./file/17.png")
img2 = Image.open("./file/18.png")
img3 = Image.open("./file/19.png")

img = Image.new('RGB', (512, 512))
for i in range(512):
    for j in range(512):
        p1 = img1.getpixel((j, i))
        p2 = img2.getpixel((j, i))
        p3 = img3.getpixel((j, i))
        img.putpixel((j, i), (p1, p2, p3))
img.save("./file/flag.png")

提取出来就是flag图片