文章目录
- 签到题喵
- take_the_zip_easy
- mp3
- 机你太美
签到题喵
把文件尾的16进制复制出来,再转换字符串
私信后台即可获得flag
take_the_zip_easy
明文攻击
echo -n “dasflow.pcapng” > 1.txt
time ./bkcrack -C zipeasy.zip -c dasflow.zip -p 1.txt -o 30 -x 0 504B0304 >1.log
获取到密钥
Keys: 2b7d78f3 0ebcabad a069728c
破解密码,恢复文件
./bkcrack -C zipeasy.zip -c dasflow.zip -k 2b7d78f3 0ebcabad a069728c -d flow.zip
哥斯拉流量,直接导出http文件,可以看到源码,pass和key
过滤出http数据包,减少干扰数据
追踪tcp流10,获取压缩包flag.zip
追踪流9,猜测为解压压缩包的流量,进行解码分析
参照2022DASCTF X SU 三月春季挑战赛,payload如下
<?php
function encode($D,$K){
for($i=0;$i<strlen($D);$i++){
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
$pass='air123';
$payloadName='payload';
$key='d8ea7326e6ec5916';
$data = 'J+5pNzMyNmU2mij7dMD/qHMAa1dTUh6rZrUuY2l7eDVot058H+AZShmyrB3w/OdLFa2oeH/jYdeYr09l6fxhLPMsLeAwg8MkGmC+Nbz1+kYvogF0EFH1p/KFEzIcNBVfDaa946G+ynGJob9hH1+WlZFwyP79y4/cvxxKNVw8xP1OZWE3';
$decode = encode(base64_decode($data),$key);
echo base64_encode(gzdecode($decode));
?>
获取密文
Y21kTGluZQJQAAAAc2ggLWMgImNkICIvdmFyL3d3dy9odG1sL3VwbG9hZC8iO3ppcCAtbyBmbGFnLnppcCAvZmxhZyAtUCBhaXJEQVMxMjMxcWFTV0AiIDI+JjFtZXRob2ROYW1lAgsAAABleGVjQ29tbWFuZA==
base64解码,获得压缩包密码为airDAS1231qaSW@
解压获取flag
mp3
mp3文件尾存在一png文件,为lsb隐写
可以使用zsteg进行提取
解压时需要密码,结合mp3的文件名重新分析
mp3文件隐写,mp3stego,甚至连音频都是工具自带的音频,没有密码,直接敲回车即可
Decode.exe -X C:\Users\wha1e\Desktop\cipher.mp3
获得密码8750d5109208213f
解压获得47.txt
根据文件名猜测为rot47
得到
a=~[];a={___:++a,aaaa:(![]+"")[a],__a:++a,a_a_:(![]+"")[a],_a_:++a,a_aa:({}+"")[a],aa_a:(a[a]+"")[a],_aa:++a,aaa_:(!""+"")[a],a__:++a,a_a:++a,aa__:({}+"")[a],aa_:++a,aaa:++a,a___:++a,a__a:++a};a.a_=(a.a_=a+"")[a.a_a]+(a._a=a.a_[a.__a])+(a.aa=(a.a+"")[a.__a])+((!a)+"")[a._aa]+(a.__=a.a_[a.aa_])+(a.a=(!""+"")[a.__a])+(a._=(!""+"")[a._a_])+a.a_[a.a_a]+a.__+a._a+a.a;a.aa=a.a+(!""+"")[a._aa]+a.__+a._+a.a+a.aa;a.a=(a.___)[a.a_][a.a_];a.a(a.a(a.aa+"\""+a.a_a_+(![]+"")[a._a_]+a.aaa_+"\\"+a.__a+a.aa_+a._a_+a.__+"(\\\"\\"+a.__a+a.___+a.a__+"\\"+a.__a+a.___+a.__a+"\\"+a.__a+a._a_+a._aa+"\\"+a.__a+a.___+a._aa+"\\"+a.__a+a._a_+a.a__+"\\"+a.__a+a.___+a.aa_+"{"+a.aaaa+a.a___+a.___+a.a__a+a.aaa+a._a_+a.a_a+a.aaa+a.aa_a+a.aa_+a.a__a+a.a__a+a.aa_a+a.aaa+a.aaaa+a.aa_a+a.a_aa+a.a_a_+a.aaa+a.aaa_+a.a__a+a.aaa+a.a_a_+a.__a+a.a_a+a.aa__+a.a__+a.aaaa+a.a__a+a.a__+a.a_aa+a.a__+"}\\\"\\"+a.a__+a.___+");"+"\"")())();
控制台运行即可获得flag
机你太美
赛后复现出的,这题不好评价
7zip直接解压获取vmdk,火眼挂载
一堆加密的zip,一个jpg一个png
jpg在分析文件头尾的时候直接可以看到,XOR DASCTF2022
或者根据hint查看exif信息。
比赛的时候快猪脑过载了以为这个jpg还藏了东西,结果在这里死磕,就随便用zsteg看了一下png,没仔细看图层。实际上jpg就是告诉你最后和DASCTF2022异或
stegsolve察看图层
将其黑白提取为01,获取压缩包密码e01544a9333ef62a3aa27357eb52ea8a
这里搓脚本获取会好一点,正常是用ps截图,然后提取数据,最后再修
我用ps扣下来的图
这里需要根据情况来进行修改
从第一个黑色像素到最后一个黑色像素一共有255个像素点,而转成01,8位一组需要256个像素点,所以尝试到底是开头缺少一个还是末尾缺少一个,另外还要尝试是黑色代表0还是白色代表0。(当然也有可能是删掉多余的7个)
最终脚本如下:
from PIL import Image
def extract_black_pixels(image_path):
image = Image.open(image_path)
pixels = image.load()
width, height = image.size
result = ''
for y in range(height):
for x in range(width):
if pixels[x, y] == (0, 0, 0):
result += '0'
else:
result += '1'
return result
if __name__ == '__main__':
image_path = 'save.bmp'
result = extract_black_pixels(image_path)
print(result)
经过几次尝试最终有效明文的组合如下:
0110010100110000001100010011010100110100001101000110000100111001001100110011001100110011011001010110011000110110001100100110000100110011011000010110000100110010001101110011001100110101001101110110010101100010001101010011001001100101011000010011100001100001
对应的压缩包为50.zip,至于其他的压缩包有什么用,姑且当作干扰吧,,,
最后解压出来的玩意和上面获取的字符串异或一下就可以了