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图片