BUUCTF-MISC(9)

319 阅读3分钟

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

[HDCTF2019]你能发现什么蛛丝马迹吗

内存取证题目,我们用vol工具分析一下,首先看一下系统版本。

volatility.exe -f memory.img imageinfo

找到版本后,我们进行一下常规操作,先查看一下进程

volatility -f memory.img --profile=Win2003SP1x86 pslist

查看cmd命令使用记录

volatility -f memory.img --profile=Win2003SP1x86 cmdscan

DumpIt.exe这个程序dump下来

发现两个图片,其中一个是二维码,扫一下

jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=

另一个给了key与vi

key: Th1s_1s_K3y00000
iv: 1234567890123456

判断为AES加密,解密即可

flag{F0uNd_s0m3th1ng_1n_M3mory}

[DDCTF2018]流量分析

下载附件,流量包分析,给了我们提示,说了校验MD5值与注意私钥的格式

我们看流量包,根据提示,查看TCP流,发现了一串base64编码,应该是图片,我们利用工具可以解开。

或者可以直接导出IMF对象,也是可行的。

得到图片,用文字提取提取出来

MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
...以下忽略

将文字保存为txt文件中,用wireshark在选项找到tsl解密加入这个txt文件

解出来了可以查看http流,里面就有flag.

flag{0ca2d8642f90e10efd9092cd6a2831c0}

INSHack2018 so deep

下载附件是一个wav文件,我们将其放进audacity分析。查看频谱图,发现前半个flag

需要我们找到另一半flag,因为是wav音频文件,我们试一试deepsound看看是否加密了。

果然需要密码,于是我们下一步就是找到破解密码。

这里尝试爆破来获取密码,脚本如下

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)

用法示例

step1:python3 deepsound.py flag.wav > password.txt
step2:john password.txt

得到密码azerty,破解得到另一半flag

flag{Aud1o_st3G4n0_1s_4lwayS_Th3_S4me}

[INSHack2017]10-cl0v3rf13ld-lane-signal

下载完毕,是个.unk后缀的文件。放入010查看看到jpg文件头,所以我们改一下后缀。

接着binwalk分离得到一张png。

png中有隐藏的莫斯密码,翻译成help me.

再将png放入010查看,发现有个ogg开头的文件,百度后发现是个音频文件。我们用工具打开,查看频谱。

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

解密后得到flag

flag{M0R53_W1LL_N3V3R_4G3!}