BUUCTF-MISC(10)

345 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

[INSHack2019]Passthru

下载附件,一个流量包和一个sslkey.log。

数据传输是TLS协议。发现被加密了,需要我们用sslkey.log去解密。

编辑>首选项>Protocols>TLS ,接着我们过滤GET请求。

http.request.method==GET

发现请求的参数,是

&kcahsni=9ef773fe97f56554a3b4

这里涉及一个密钥的tshark导出,记录一下

tshark -r fixed.pcap -o 'ssl.keylog_file:sslkey.log' -Y 'http contains "GET /searchbyimage"' -T fields -e http.request.uri.query.parameter > queries.txt

-o 设置首选项值,这里导入key,-Y 过滤器,-e 添加一个字段

image_url=http%3A%2F%2Frequestbin.net%2Fr%2Fzk2s2ezk%3Fid%3D82290383-7480-487c-b78b-77ac769c56cd%26kcahsni%3D9ef773fe97f56554a3b4,encoded_image=,image_content=,filename=,hl=fr
image_url=http%3A%2F%2Frequestbin.net%2Fr%2Fzk2s2ezk%3Fid%3D8bd542b5-2056-489e-bc1c-4f028ef27894%26kcahsni%3D26cd07e1f71df3dcee9f,encoded_image=,image_content=,filename=,hl=fr

用脚本全部导出来

hexstr = ''
with open('queries.txt', 'rt') as f:
    hexstr = ''.join([param.split(',')[0][109:] for param in f.readlines()])


out = bytes.fromhex(hexstr).decode('latin1')
print(out)
Kþ>.¡ÆÂJÒjE(Îþ÷Ûgf“èǨò$lÐÕ2INSA{b274dddb2c7707ebe430dadcf1245c246713502d6e9579f00acd10a83f3da95e}
<ðRüh9¹Zr‰¯ŸîÜó÷áÍ&´£Teõ—þs÷ž

逆序一下就是flag

flag{b274dddb2c7707ebe430dadcf1245c246713502d6e9579f00acd10a83f3da95e}

[BSidesSF2019]thekey

usb流量包。可以手动去提,我们先用工具UsbKeyboardDataHacker试一试。

UsbKeyboardDataHacker.py attchment.pacg
flag{MY_FAVOURITE_EDITOR_IS_VIM}

[QCTF2018]picture

下载附件放入010editor,发现PNG文件头,我们修改后缀保存为png图片。

根据提示

Just misc it
 
hint:注意文件名(非hash部分)
 
原文件名:bd4408a3-9835-4962-a9af-6acf6cc56b26.wwjkwywq-2a7c8b1b70e00a010c92cab0394c6f93

猜测为lsb隐写,密钥为图片成语的缩写

python2 lsb.py extract attachment.png attachment.txt wwjkwywq

解出来一个脚本,太长了就不放了,就是一个des加密的脚本,网上能找到解密的脚本

因为基本一致,所以不用过多的修改就可以解出来

QCTF{eCy0AALMDH9rLoBnWnTigXpYPkgU0sU4}

[INSHack2018]Spreadshit

This spreadsheet doesn't contain anything interesting... Or does it ?

附件是一个excel文件,我们搜索空格全部选中就能发现flag.

flag{3cf6463910edffb0}

静静听这么好听的歌

下载附件一个是txt一个是wav音频文件。

fid=fopen('33.wav','rb');
a=fread(fid,inf,'uchar');	
n=length(a)-44;
fclose(fid);


io=imread('kkk.bmp');	
[row col]=size(io);	# 返回图像尺寸
wi=io(:);	# 二维转一维
if row*col>n
 error('文件太小');	# 要隐写的目的文件要够大
end
watermarkedaudio=a;
watermarklength=row*col;
for k=1:row*col	# 从1到row*col
 watermarkedaudio(44+k)=bitset(watermarkedaudio(44+k),1,wi(k));
end
figure;
subplot(2,1,1);plot(a);
subplot(2,1,2);plot(watermarkedaudio);
fid = fopen('2.wav', 'wb');
fwrite(fid,watermarkedaudio,'uchar');
fclose(fid);

将一张位图使用LSB算法嵌入wav音频文件中,要想还原,至少要知道宽+高或图片大小+宽/高其中之一,但题目并没有给我们。根据分值,盲猜388*height

# python脚本
import numpy as np
from PIL import Image


wav = open('aaa.wav','rb')
content = wav.read()
wav.close()


bins = []
for i in range(45,45+388*100):
    bins.append(255 if int(bin(content[i])[-1:]) else 0)
flag = np.array(bins,np.uint8).reshape(388,100)


imgg = Image.fromarray(flag).save('res.bmp')

测试为100,再用脚本还原。

% matlab脚本
clc;
clear;


row = 388;
col = 100;
marklength = row*col;
imgData = [0];


wavFile = fopen('aaa.wav','rb');
data = fread(wavFile,inf,'uchar');
for i=45:marklength+45
    imgData(i-44) = bitget(data(i),1);
end
% 一维数组转二维数组
img = convert(imgData,row,col);
imwrite(img,'flag.bmp');
imshow('flag.bmp');


function A=convert(oi,row,col)
    %创建一个二维空数组
    A = zeros(row,col);
    for i=1:row
        for j=1:col
            A(i,j) = oi((i-1)*col+j);
        end
    end
end
flag{dce97bd455ae1a00faaebd31c57e7d47}