BUUMisc通关6

【INSHack2018】42.tar.xz

知识点:压缩包套娃、bash命令

对于压缩包套娃的题目,用 bash 命令循环解压即可

1
while [ "find . -type f -name '*.tar.xz' | wc -l" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' \; -exec rm -- '{}' \;; done;

while [ "find . -type f -name '*.tar.xz' | wc -l" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' ; -exec rm -- '{}' ;; done;

题目分析

压缩包套娃,解压没有密码,可以直接解压。那么用 bash 命令直接循环解压即可

1
while [ "find . -type f -name '*.tar.xz' | wc -l" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' \; -exec rm -- '{}' \;; done;

将包含 42.tar.xz 压缩文件的 tmp 文件夹直接拖入 kali 中,然后再 tmp目录下执行上面的bash命令,如果是直接把 压缩文件拖入kali 执行上面的命令会发生错误,暂时没找到原因。

image-20210717152425232
1
# strings flag 查找flag字符

INSA{04ebb0d6a87f9771f2eea4dce5b91a85e7623c13301a8007914085a91b3ca6d9}

大流量分析(二)

知识点:流量分析(SMTP)

SMTP百度百科

SMTP:简单邮件传输协议

image-20210717160502903

题目分析

打开题目给的文件下载链接,因为文件很大,看了一下 164535.pcap 这个流量包稍微特别些,就先下载看了一下

image-20210717160647467

题目说 flag是黑客使用的邮箱,既然有邮件的传输,那么就要用到邮件传输协议 SMTP.

筛选 SMTP 流量包

image-20210717161528063

flag{xsser@live.cn}

【MRCTF2020】寻找xxx

知识点:拨号音隐写(dtmf)

在线拨号音识别网站 Detect DTMF Tones

本地拨号音识别工具 dtmf2num

dtmf2num下载网址

使用方法:

powershell 执行:

PS E:\CTF_tool\4.Misc_tool\10.拨号音隐写\dtmf2num> .\dtmf2num.exe 密码.wav

题目分析

在线拨号音识别网站 轻松得到电话号码: 18684221609

image-20210717163002757

发送号码到 天璇merak的公众号,得到 flag

image-20210717163143326

flag{Oh!!!!!_Y0u_f1nd_my_secret}

方法二:用本地工具dtmf2num

image-20210717164743884

【NPUCTF2020】碰上彩虹,吃定彩虹!

知识点: 

Autokey爆破

参考【XMAN2018排位赛】AutoKey

零宽字符隐写

参考:【UTCTF2020】zero

词频统计

词频统计脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# python3
from collections import Counter
f=open('1.txt','r')
f_read=f.read()
out= Counter(f_read)
print(out)
print(out.items())

sorted_x = sorted(out.items(), key=lambda x: x[1], reverse=True) #对可迭代的对象进行排序

for i in sorted_x:
    print(i[0],end="")

#item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回。
#sorted() 可以对所有可迭代的对象进行排序操作。
'''
sorted 语法: sorted(iterable, cmp=None, key=None, reverse=False)
参数说明:

iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
'''

在线词频统计网站

NTFS文件隐写

工具:ntfsstreamseditor

image-20210717210905622

Encrypto数据加密软件

下载链接,encrypt加密文件的后缀为 .crypto

图片RGB颜色分析

参考文章

很好的色彩呃?

ALPHUCK加密

ALPHUCK加解密网站 网站,查阅可知 Alphuck 的加密方法仅包含 8 个小写字母 a c e i j o p s

题目分析

题目给了三份文件 lookatme.txt 、maybehint.txt、secret

用 Sublime Text 打开 lookatme.txt 文件,发现摩斯电码

image-20210717171119221

.- ..- - --- -.- . -.--

解码后得到:autokey

将密文 achnrvxzzuglarucalznwcygfggrufryvbzqjoxjymxvchhhdmliddcwmhghclpebtzwlojvew 放入 break_atuokey.py中

进行 autokey 爆破

参考【XMAN2018排位赛】AutoKey

image-20210717172652953

1
2
# "YOUHAVEFOUNDME", CONGRATULATIONSONFINDINGMYSECRETNOWIWILLGIVEYOUTHEPASSWORDITISIAMTHEPASSWD
# CONGRATULATION SON FINDING MY SECRET NOW I WILL GIVE YOU THE PASSWORD IT IS IAMTHEPASSWD

查看maybehint.txt文件内容

emmmmm... something important was hidden in txt‌‍‌‌‌‌‌‌‍‌‌‌‌‌‍‌‍‍‍‌‌‍‌‌‌‌‌‌‍‌‌‍‍‍‍‌‌‍‌‍‌‌‍‍‌, but I can't find it!

提示有隐写的信息:查看文件大小,发现有 656字节。显然有隐写的内容,在kali 中用 vim 查看

image-20210717204231147

可以知道这里是零宽字符隐写,参考:【UTCTF2020】zero

1
2
3
4
# 文本中的零宽字符有
<200c>
<200b>
<200d>

将 maybehint.txt 文件隐写内容 用在线网站解密:

http://330k.github.io/misc_tools/unicode_steganography.html

image-20210717210004820

image-20210717205948586

得到新提示 NTFS,ntfsstreamseditor 文件隐写

image-20210717210905622

导出文本 out.txt 得到:

=wwZlZ=8W=cndwljcdcG8wdj8W8Z8dZllGjZc=8lWjnlWd8WwZ5j=l8ccWZcZGjd5ZwZ5WZ8d=Zcwjwl5Gnn=WdwcwlnWd5lGnZWlnnwdnjnw8ndnc58d5cndl=njZl=WddjwWWwZllj5c5jGwZnZ5W=cZljdwd8c=85ndGGljcl5ccwd=W=l8w=5lwWn8WnwnWlGZwdcnGGl5G=8W==cnnWZnWjZ=wWcGwZcWc8ncWW=5jnWwcZl8W=8cdwWldlnwW5ddwlnlwncWlcwGZddj5djZWc5jcWdn5jdjwnj85GWGjnjwGd=jZGj5j==jwjlw8dlwWj5Wjn5n8dwwdjZlc5lZwdWldZlnGwl85cWnjd=WcWlwj8WGdlGncnZWGGd5ZncW5d55nW5wl=Wj8jGWnWj8jwZ=ZwWZ88nWG5nn5WlWnGdWw5Zn8jdl=nGcnll8WncZjnGn=dlwn5W8wlWjlnl5ccnGWGnnnc58WnjlGnG55Zwdn5cZdjdZZ5WljG5G5wcldd=Wlc8Z=8nGj=jWd8w8Wd=w8nccc8wZdjcnGdljZnnj5ww8885=lcWW8W8j5dG8jZZwG55GjnwZ=W5Z8G5ZlGc5ZZncZ5cd8j85GW5nj=WWncn55Gj5nj5nwnW58jG8GcnjZdWcl8wj8n=cj=8l8cn5jjcjn8lldn=Gjw8=cjcdWWjGddZljdjdZnG8djnZccZldlWllw5ZZ8wj5Gn==5w8Z=j55n=ZZ5wdww8lndwd8Wlj8WGjnl=nncZ=W8ZZWZnjjlwWGZZlZc5c==d8Zl855wZn=W=w8wWjZ85cGc==5Z8ccjdw5GnZWnGjcdGGnZ5wwwWGG5d=W5ldjwGZZdZwdG5cGGnZGlGc=W5ccWZ8=cGljdGcdld=8cj8jwn=lj88ZZ5jn5lcZ=Gdw=Zl58WZZl5ccwccwG5d5w8Z5wllj5ddnn=5=w8588WwGj=l5G55dWG8cl=GcjWwlwG=lWWnZ=dZG85Gcjc5=wnw=j==Gndnddjwn5c=c5W5wwdWlG5nWZwnGw8=lcWldcwnG5Wcjj=cWlGZc8Gn58ZWjZ85ljlncZj5cc=dZWGjd=d8ncZ8www55=cw=GWZn5ZZlnWld=cWcnclWlZG5djGW=cl8=ZG8cZwwc8wl=88W5ZwZ=jwZGGlcWcWnZZ5Zj5w5ZdZclZZWnccGw==cG8W8ZWlc8wcZ555Z85ljWG5jZ=8=wllWjWjlZc5lG8cwWlnjlGlW=l5=n=lGwnjGGjGdwj85ddW5ZwZ=ddjWldj=cjljjGwndZjWWZGcdWcZW5cdldj8WZjGljlWncZ5=8jnZWjl8wjZG5Zwlcl5dd

词频统计

在线词频统计

image-20210717211213139

得到: ZW5jcnlwdG8=

image-20210717211418408

base64解码得到 :encrypto

google一下 encrypto ,知道了这是个加密软件,下载链接,encrypt加密文件的后缀为 crypto,将 secret 文件后缀名改为 secret.crypto 即可打开文件

image-20210717212505185

文件解密需要密码,前面 autokey 爆破得到了一份密码的

IAMTHEPASSWD

iamthepasswd

image-20210717213006483

然后卡在这里解不开,根据官方的提示,需要把加粗的括号删掉

在kali 中用 strings 命令查看 secret.crypto 文本

image-20210717213303887

用 notepad++ 打开文本,删掉 (Oh! You caught me! But...)

重新解密得到下面的png图片

image-20210717213611405

用 foremost 进行隐写文件的提取,得到一个 zip 文件,解压需要密码

参考文章:很好的色彩呃?

1
2
3
4
5
6
7
8
# 通过观察图片的 RGB 16进制编码信息,发现黄色部分的16进制编码是不同的。
#ffff70
#ffff40 
#ffff73
#ffff73
#ffff57
#ffff64
704073735764

image-20210717214626626

解压密码 p@ssWd,解压得到 弗拉格.docx,很明显这就是 flag 了

image-20210717220012692

将大写连起来就是 ALPHUCK,google查一下

得到这个 Alphuck 网站,查阅可知Alphuck 的加密方法仅包含 8 个小写字母 a c e i j o p s

eeeeeeeeeepaeaeeeaeeeeeeeaeeeeeeeeeeccccisaaaaeejeeeeeejiiiiiiiiiiijeeeeeejeeeeeeeeeeeeeeeeeeeejcceeeeeeeeeeePeeeeeeeejaaiiiiiiijcciiiiiiiiiijaaijiiiiiiiiiiiiiiiiiiiijeeeeeeeeeeeeeeeeeeeeeeejcceeeeeeeeeeeejaaiiiijeeeeeeejceeeeeeeeeeeeeeeeeeeeeeeeejceeeeeeeeeeeeeeeeejaeeeeeejciiiiiiiiiiiiiiiiiiijaeeeejceeeeeeeeeeeeeeeeeejajciiiiiiiiiiiiiiiiiiijaaiiiijiijeeeeeeeeeeejcciiiiiiiiiiiiiiijaaij

image-20210717221031231

1
# flag{1t's_v3ry_De1iCi0us~!}

【网鼎杯 2020 青龙组】虚幻2

知识点:汉信码、RGB信息识别脚本 

汉信码--wiki 是一种矩阵式二维条码。从形状上,它呈正方向、有深色和浅色数据模块分布其间。

历史:

汉信码的研发始于2003年,并于2005年年末完成。汉信码研是中国物品编码中心依据中国国家“十五”重大科技专项——《二维条码新码制开发与关键技术标准研究》研发成功。

汉信码结构特质:

注意 :寻像图形的特征

image-20210718201409630

题目分析

1、题目描述

1、汉信码

2、 图片要转转

3、 暴力修补

下载题目得到一份 file 文件, 010editor打开发现是 png 文件。添加 .png后缀名后打开,得到下图有点像二维码

image-20210718202147196

看了其他师傅的 blog 后,才知道这是汉信码

用 stegsolve.jar 查看图片的 RGB通道,得到下面图片:(用PPT旋转的图片)

image-20210718203758816

这里的第一种做法是用excle,自己绘制出汉信码,按列读取。

参考:

2020网鼎杯-青龙组-虚幻2赛题讲解

第二种做法是写python脚本读取, file.png 图片的RGB值,再进行汉信码还原。脚本不会写,这里是用的

root师傅的脚本

ShawRoot

该图宽36像素,高度12像素。写脚本读取图片的RGB值(竖着读),每一个像素点的每一个RGB值都要逐个分析,“255”视为1,“0”视为0:

读取 file.png ,获取RGB值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#python3 
from PIL import Image

x = 36	  #x坐标	
y = 12	  #y坐标	

file=Image.open('file.png')
outfile = open('out','w')

z=''
for i in range(x):
    for j in range(y):
        rgb=file.getpixel((i, j))
        print(rgb)
        if(rgb[0] == 255):
            z+='1'
        elif(rgb[0] == 0):
            z+='0'
        if(rgb[1] == 255):
            z+='1'
        elif(rgb[1] == 0):
            z+='0'
        if(rgb[2] == 255):
            z+='1'
        elif(rgb[2] == 0):
            z+='0'
print(z)
outfile.write(z)

将 RGB信息重新合成 图片

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import Image

x = 36	  #x坐标	
y = 36	  #y坐标	

im = Image.new("RGB", (x, y))	
file = open('out','r')	

a=file.read()
z=0
for i in range(0, x):
	for j in range(0, y):
		print(a[z])
		if(a[z]=='1'):
			im.putpixel((i, j), (255, 255, 255))
		elif(a[z]=='0'):
			im.putpixel((i, j), (0, 0, 0))
		z=z+1

im.show()
im.save('1.png')

执行上面的脚本得到,恢复的汉信码:

打开图片可以用 VScode打开,就不会很模糊了

image-20210718210558218

对比正确的汉信码,发现左下角的寻像图形不正确,PS调整后,得到的汉信码通过扫描依旧无法识别

这里涉及汉信码的纠错识别,将右边空白部分随便写两笔,强行误码让他自修复。得到flag

image-20210718175428478

汉信码自动识别的网站已经挂掉了,识别软件在手机下载 中国编码。然后扫码识别

image-20210718211404081

【GKCTF 2021】签到

知识点:流量分析(HTTP流量)、字符反转+base64解码、CyberChef工具

CyberChef 在线网站:

CyberChef

CyberChef下载本地工具:

Releases · gchq/CyberChef · GitHub

Github 文件加速网站

Github 文件加速网站

题目分析

下载得到 tmpshell.pcapng 文件,wireshark 打开发现 HTTP传输过 tmpshell.php 文件

导出 HTTP 对象,新建文件夹保存

image-20210718150638711

image-20210718150534137

打开导出的 tmpshell.php 文件,得到: 634768774c6d78735a57687a6347313043673d3d

CyberChef在线网站 解密: Hex ==> base64

image-20210718160116484

解密后发现,得到的字符是反转的,说明出题人将字符先进行反转再base64加密 ,再编码为 16 进制数。

在 tmpshell(18).php 文件中得到:QER1=cat /f14g | base64

将 tmpshell(19).php 中的内容解码

from hex、from base64

image-20210718160630977

将 base64 字符串逆序输出 reverse line、reverse character、from base64

image-20210718164544575

ffllaagg{{}}WWeellcc))[删除] [删除] 00mmee__GGkkCC44FF__mm11ssiiCCCCCCCCCCCC!!

flag{Welc0me_GkC4F_m1siCCCCCC!}

【De1CTF2019】Mine Sweeping

知识点:unity&C#、dnSpy反编译工具

unity&C#

Unity是游戏开发平台,C#是一门游戏开发语言

dnSpy

dnSpy 是一款针对 .NET 程序的逆向工程工具。该项目包含了反编译器,调试器和汇编编辑器等功能组件,而且可以通过自己编写扩展插件的形式轻松实现扩展。该项目使用 dnlib读取和写入程序集,以便处理有混淆代码的程序(比如恶意程序)而不会崩溃。

Github库

dnSpy二进制文件下载

使用教程参考文章

题目分析

参考AiDai狮虎的blog,AiDai爷 太强了

题目给了一个用Unity C#编写的扫雷游戏,应该是扫雷成功就能得到 flag 了 。直接用反编译神器 dnSpy 进行游戏代码的修改。

将 \attachment\Mine Sweeping\Mine Sweeping_Data\Managed\Assembly-CSharp.dll 文件拖入 dnSpy 反编译工具中

根据类名的翻译 可知 MineAt() 应该是生成地雷的逻辑程序,将返回值修改为 return false 、编译、保存代码、执行程序。

打开游戏随便点一下,直接就能得到一张二维码图片

image-20210719123319098

image-20210719123920917

image-20210719124032484

扫描二维码得到 flag

de1ctf{G3t_F1@g_AFt3R_Sw3ep1ng_M1n3s}

【INSHack2017】10-cl0v3rf13ld-lane-signal

知识点:jpg图片隐写、foremost提取、OGG音频文件、Morse电码

OGG音频文件:

百度百科

文件头:4F 67 67 53

在线Morse音频解码网站

题目分析

题目给了一份 markdown 描述文件和一份 find_me 文件,用 010editor打开,发现是 jpg 图片,将文件后缀名修改为 find_me.jpg 。打开得到

image-20210719133953526

用 foremost 分离得到 png图片

image-20210719134103395

摩尔斯电码,左下角发现有东西,用 VScode放大查看

image-20210719133730548

.... . .-.. .--. -- .

摩尔斯电码解密得到: helpme

继续分析最初的 find_me.jpg 图片,在 png 文件尾发现还有文件

image-20210719134655264

百度 OggS,可知:

image-20210719135107831

将 OGG文件提取出来,保存为 1.ogg ,用Audacity 打开,还是Morse电码,用在线网站解密即可:

在线Morse解码网站

image-20210719135934070
1
2
3
# EENSA(M0R53W2HLN3V3SE4G3!)
# flag{M0R53_W2HLN3V3SE4G3!}
# flag是错的,测试发现这在线网站解码有误,还是手动解更稳
.. -. ... .- -.--. -- ----- .-. ..... ...-- ..--.- .-- .---- .-.. .-.. .--.- -. ...-- ...- ...-- .-. ..--.- ....- --. ...-- -.-.-- -.--.-
# 解码得到
# insa m0r53 w1ll n3v3r 4g3 (
flag{m0r53_w1ll_n3v3r_4g3 (}
insa(m0r53_w1ll%udn3v3r_4g3!)

多试几个解码网站,啥结果都有
最后flag是flag{m0r53_w1ll_n3v3r_4g3!} 大写
flag{M0R53_W1LL_N3V3R_4G3!}

【INSHack2018】(not) so deep

知识点:频谱图、DeepSound

DeepSound:

DeepSound 是一种隐写术工具和音频转换器,可将秘密数据隐藏到音频文件中。该应用程序还使您能够直接从音频文件或音频 CD 曲目中提取秘密文件。 DeepSound 可用作 wave、flac、wma、ape 和音频 CD 的版权标记软件。DeepSound 还支持使用 AES-256(高级加密标准)加密机密文件以提高数据保护。 该应用程序还包含一个易于使用的音频转换器模块,可以将多种音频格式(FLAC、MP3、WMA、WAV、APE)编码为其他格式(FLAC、MP3、WAV、APE)。

DeepSound下载

deepsound2john.py

用于破解有密码的 deepsound 加密文件

1
2
3
4
#执行命令
python3 deepsound2john.py finl_flag.wav > hash.txt
john hash.txt
john hash.txt --show
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# python3
#!/usr/bin/env python3
'''
deepsound2john extracts password hashes from audio files containing encrypted
data steganographically embedded by DeepSound (http://jpinsoft.net/deepsound/).
This method is known to work with files created by DeepSound 2.0.
Input files should be in .wav format. Hashes can be recovered from audio files
even after conversion from other formats, e.g.,
    ffmpeg -i input output.wav
Usage:
    python3 deepsound2john.py carrier.wav > hashes.txt
    john hashes.txt
This software is copyright (c) 2018 Ryan Govostes <rgovostes@gmail.com>, and
it is hereby released to the general public under the following terms:
Redistribution and use in source and binary forms, with or without
modification, are permitted.
'''

import logging
import os
import sys
import textwrap


def decode_data_low(buf):
  return buf[::2]

def decode_data_normal(buf):
  out = bytearray()
  for i in range(0, len(buf), 4):
    out.append((buf[i] & 15) << 4 | (buf[i + 2] & 15))
  return out

def decode_data_high(buf):
  out = bytearray()
  for i in range(0, len(buf), 8):
    out.append((buf[i] & 3) << 6     | (buf[i + 2] & 3) << 4 \
             | (buf[i + 4] & 3) << 2 | (buf[i + 6] & 3))
  return out


def is_magic(buf):
  # This is a more efficient way of testing for the `DSCF` magic header without
  # decoding the whole buffer
  return (buf[0] & 15)  == (68 >> 4) and (buf[2]  & 15) == (68 & 15) \
     and (buf[4] & 15)  == (83 >> 4) and (buf[6]  & 15) == (83 & 15) \
     and (buf[8] & 15)  == (67 >> 4) and (buf[10] & 15) == (67 & 15) \
     and (buf[12] & 15) == (70 >> 4) and (buf[14] & 15) == (70 & 15)


def is_wave(buf):
  return buf[0:4] == b'RIFF' and buf[8:12] == b'WAVE'


def process_deepsound_file(f):
  bname = os.path.basename(f.name)
  logger = logging.getLogger(bname)

  # Check if it's a .wav file
  buf = f.read(12)
  if not is_wave(buf):
    global convert_warn
    logger.error('file not in .wav format')
    convert_warn = True
    return
  f.seek(0, os.SEEK_SET)

  # Scan for the marker...
  hdrsz = 104
  hdr = None

  while True:
    off = f.tell()
    buf = f.read(hdrsz)
    if len(buf) < hdrsz: break

    if is_magic(buf):
          hdr = decode_data_normal(buf)
          logger.info('found DeepSound header at offset %i', off)
          break

    f.seek(-hdrsz + 1, os.SEEK_CUR)

  if hdr is None:
    logger.warn('does not appear to be a DeepSound file')
    return

  # Check some header fields
  mode = hdr[4]
  encrypted = hdr[5]

  modes = {2: 'low', 4: 'normal', 8: 'high'}
  if mode in modes:
    logger.info('data is encoded in %s-quality mode', modes[mode])
  else:
    logger.error('unexpected data encoding mode %i', modes[mode])
    return

  if encrypted == 0:
    logger.warn('file is not encrypted')
    return
  elif encrypted != 1:
    logger.error('unexpected encryption flag %i', encrypted)
    return

  sha1 = hdr[6:6+20]
  print('%s:$dynamic_1529$%s' % (bname, sha1.hex()))


if __name__ == '__main__':
  import argparse

  parser = argparse.ArgumentParser()
  parser.add_argument('--verbose', '-v', action='store_true')
  parser.add_argument('files', nargs='+', metavar='file',
    type=argparse.FileType('rb', bufsize=4096))
  args = parser.parse_args()

  if args.verbose:
    logging.basicConfig(level=logging.INFO)
  else:
    logging.basicConfig(level=logging.WARN)

  convert_warn = False

  for f in args.files:
    process_deepsound_file(f)

  if convert_warn:
    print(textwrap.dedent('''
    ---------------------------------------------------------------
    Some files were not in .wav format. Try converting them to .wav
    and try again. You can use: ffmpeg -i input output.wav
    ---------------------------------------------------------------
    '''.rstrip()), file=sys.stderr)

John是用于破解hash值的工具,kali自带:

john工具对于同一个 hash.txt 文件只会进行一次爆破,如果第二次执行john hash.txt 是不会得到结果的,只会得到如下输出。

1
2
3
4
# john hash.txt                                                                                         
Using default input encoding: UTF-8
Loaded 1 password hash (dynamic_1529 [sha1($p null_padded_to_len_32) (DeepSound) 128/128 AVX 4x1])
No password hashes left to crack (see FAQ)                                

如果想查看上一次爆破的结果,可以使用以下命令

# john hash.txt --show

如果想重新破解hash值,则需要删除 john.pot 文件中的历史值

破解过的密码会存储在home目录下的隐藏文件.john/john.pot中

Linux中使用 ls -a 命令可以显示该目录下的所有文件(包括隐藏文件夹)

使用快捷键Ctrl+H可以显示和隐藏(隐藏文件)。

image-20210719161002687

题目分析

音频文件直接用 Audacity 打开分析,查看频谱图查看就拿到 flag 了。但只有前一半

image-20210719143117037

参考Root师傅的Wp

接下来需要用到音频分析软件 DeepSound

加载 final_flag.wav 文件提示需要密码

image-20210719151255756

用Root师傅的 破解脚本deepsound2john.py

image-20210719151655008

得到密码:azerty

导出得到另一半

0_1s_4lwayS_Th3_S4me}

image-20210719155106381

flag{Aud1o_st3G4n0_1s_4lwayS_Th3_S4me}

【BSidesSF2019】diskimage

知识点:磁盘取证+testdisk恢复文件、zsteg提取数据、

磁盘取证+testdisk恢复文件:

用zsteg -a 命令可以 分析出 png 图片中隐写的磁盘数据,zsteg -e 命令导出

用kali 预装的 testdisk工具对损坏的磁盘进行数据恢复

题目分析

拿到一张 png 图片,一张损坏的磁盘,貌似有 LSB 隐写

image-20210719170416946

kali三件套走一波

file 1.png、binwalk 1.png 、zsteg -a 1.png

image-20210719170723065

有一份 FAT 磁盘数据,DOS扇区数据,用-e命令提取

1
zsteg -e "b8,rgb,lsb,xy" 1.png > diskimage.dat

testdisk恢复文件:

提取完数据后用testdisk进行分析diskimage.dat(kali 预装 testdisk)

1
# testdisk diskimage.dat

执行命令后一路回车,在出现文件时,找到一个已删除的文件 _LAG.ICO 文件

image-20210719171548391

1
2
3
4
# 按C 复制图片,得到 flag
use Right to change directory, h to hide deleted files                                                   
    q to quit, : to select the current file, a to select all files                                       
    C to copy the selected files, c to copy the current file  

image-20210719172120636

image-20210719172728004

flag{FAT12_FTW}

updatedupdated2022-06-032022-06-03