题目名称:baby_forensic
题目描述:can you catch the flag?
附件:“data.7z”

2019护网杯初赛的一道取证题,比赛时没做出来,赛后又研究了一下。

获取profile的类型,因为不同的系统数据结构不一样,所以需要用--profile=来指定。

这里自动猜解可能的系统类型,一般情况下第一个是正确的,如果不对每个都试一下。

volatility -f /root/data.vmem imageinfo

列出所有的进程

volatility -f /root/data.vmem --profile=WinXPSP2x86 pslist

psxview可以查看隐藏进程

将内存中的某个进程数据以dmp的格式保存出来

volatility -f mem.vmem --profile=WinXPSP2x86 -p [PID] -D [dump 出的文件保存的目录]

可以用strings工具打印字符串或者用编辑器打开

列举缓存在内存的注册表

volatility -f /root/data.vmem --profile=WinXPSP2x86 hivelist

hivedump 打印出注册表中的数据

volatility -f mem.vmem --profile=WinXPSP2x86 hivedump -o 注册表的virtual地址

获取SAM表中的用户

volatility -f /root/data.vmem --profile=WinXPSP2x86 printkey -K "SAM\Domains\Account\Users\Names"

提取内存中保留的cmd命令使用情况

volatility -f /root/data.vmem --profile=WinXPSP2x86  cmdscan

提示hill_matrix 3,2,2,9,7,7,6,4,9

filescan查看文件,grep搜索关键词

volatility -f /root/data.vmem --profile=WinXPSP2x86 filescan | grep 桌面

利用dumpfiles提取filescan的文件

volatility -f /root/data.vmem --profile=WinXPSP2x86 dumpfiles -Q 0x0000000001873e40 --dump-dir=/root

重命名为disk.zip,解压后是一个img镜像

进行binwalk分析

binwalk disk.img

只是一个镜像文件,使用mount命令挂载一下,新建一个命名为1的文件夹(umount /root/disk.img命令卸载)

mount disk.img ./1

打开文件发现是usb流量包

wireshark打开后看到Protocol为USB协议,搜索关于usb流量分析的文章

USB协议的数据部分在Leftover Capture Data域之中,在Mac和Linux下可以用tshark命令可以将 leftover capture data单独提取出来

tshark -r /root/1/usb.pcapng -T fields -e usb.capdata > usbdata.txt

第一次运行报错

解决方法:

1.cd /usr/share/wireshark

2.init.lua用文本编辑器打开。

3.更改disable_lua = false到disable_lua = true。

运行成功,主目录生成usbdata.txt文件

查看usbdata.txt 发现数据包长度为八个字节

查资料知道USB流量分为键盘流量和鼠标流量。

键盘数据包的数据长度为8个字节,击键信息集中在第3个字节,每次key stroke都会产生一个keyboard event usb packet。

鼠标数据包的数据长度为4个字节,第一个字节代表按键,当取0x00时,代表没有按键、为0x01时,代表按左键,为0x02时,代表当前按键为右键。第二个字节可以看成是一个signed byte类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。第三个字节与第二字节类似,代表垂直上下移动的偏移。

这里数据包长度是八个字节显然为键盘数据包。

网上查找USB协议的文档,可以找到这个值与具体键位的对应关系,根据这个映射表有脚本能解码得出数据包。

脚本如下:

mappings = { 0x04:"A",  0x05:"B",  0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G",  0x0B:"H", 0x0C:"I",  0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O",  0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"", 0x1F:"", 0x20:"", 0x21:"", 0x22:"",  0x23:"", 0x24:"", 0x25:"", 0x26:"", 0x27:"", 0x28:"n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }
nums = []
keys = open('usbdata.txt')
for line in keys:
if line[0]!='' or line[1]!='' or line[3]!='' or line[4]!='' or line[9]!='' or line[10]!='' or line[12]!='' or line[13]!='' or line[15]!='' or line[16]!='' or line[18]!='' or line[19]!='' or line[21]!='' or line[22]!='':
continue
nums.append(int(line[6:8],16))
# 00:00:xx:....
keys.close()
output = ""
for n in nums:
if n == 0 :
continue
if n in mappings:
output += mappings[n]
else:
output += '[unknown]'
print('output :n' + output)

因为不是正常字符会输出[unknown],影响找字符串,看情况修改为空格。

提示为:'WYTXRXORCQDH'.HILLDECODE

显然3,2,2,9,7,7,6,4,9是希尔密码加密矩阵,WYTXRXORCQDH是密文

希尔密码解密即可。

https://www.dcode.fr/hill-cipher

flag{SPVZPLEBASMV}

2019护网杯baby_forensic的更多相关文章

  1. [原题复现]2018护网杯(WEB)easy_tornado(模板注入)

    简介 原题复现:  考察知识点:模板注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...

  2. 护网杯圆满结束,还不满足?不如来看看大佬的WP扩展思路~

    护网杯预选赛 WP转载自:https://qingchenldl.github.io/2018/10/13/%E6%8A%A4%E7%BD%91%E6%9D%AFWP-BitPwn/#more WEB ...

  3. 2019强网杯babybank wp及浅析

    前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDec ...

  4. buu[护网杯 2018]easy_tornado

    [护网杯 2018]easy_tornado 1.看看题目给了我们三个文件: /flag.txt url=?filename=/flag.txt&filehash=98c6aac4fbecf1 ...

  5. 护网杯2019 mergeheap --pwn

    护网 又是签到 一天 这道题一开始 不懂得如何泄露 libc 信息,就蒙了  后来群里师傅也是刚刚好 做出 到这里 我就接着做了 . 先看下保护,发现  全开了 然后 就看下流程 大概 就是添加  c ...

  6. 护网杯 task_shoppingCart 记录

    前言 相关题目位于 https://gitee.com/hac425/blog_data/tree/master/hwb task_shoppingCart 漏洞位于 00BD9 用户输入 idx 然 ...

  7. 护网杯 three hit 复现(is_numeric引发的二次注入)

    1.题目源码 https://github.com/ZhangAiQiang/three-hit 题目并不真的是当时源码,是我根据做法自己写的,虽然代码烂,但是还好能达到复现的目的 ,兄弟们star一 ...

  8. 2018护网杯-easy_laravel 复现

    题目docker环境: https://github.com/sco4x0/huwangbei2018_easy_laravel git clone下来直接composer up -d 运行即可,可以 ...

  9. 护网杯web

    首先进入网页后,观察到有sign up 点击sign up 进行注册 再点击sign in 进行登录 进入一个买辣条的界面,可以知道,5元可以买一包大辣条,多包大辣条可以换一包辣条之王,多包辣条之王可 ...

随机推荐

  1. Hibernate学习(五)

    自关联测试案例 1.创建表 drop table if exists t_category ; create table t_category ( id ) primary key , name ) ...

  2. Mac终端ls颜色设置

    mac自带的终端是款非常好用的ssh工具,但ls命令下文件与文件夹都是单一的颜色,为了更好区分,作出修改. 终端默认背景颜色为白色,(终端->偏好设置->描述文本),可修改背景颜色与字体大 ...

  3. Nginx平滑升级版本!(重点)

    一.解释nginx的平滑升级 随着nginx越来越流行使用,并且nginx的优势也越来越明显,nginx的版本迭代也开始了加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理 ...

  4. 《程序之美系列(套装共6册)》[美]斯宾耐立思 等 (作者) epub+mobi+azw3

    <架构之美>内容包括:facebook的架构如何建立在以数据为中心的应用生态系统之上.xen的创新架构对操作系统未来的影响.kde项目的社群过程如何让软件的架构从粗略的草图成为漂亮的系统. ...

  5. JavaScript - onunload失效

    参考 https://stackoverflow.com/questions/7794301/window-onunload-is-not-working-properly-in-chrome-bro ...

  6. 12 JavaScript String对象 & Date对象

    <script> var a = "string"; var b = new String("string"); var c = new Strin ...

  7. 吴裕雄--天生自然TensorFlow2教程:全连接层

    out = f(X@W + b) out = relut(X@W + b) import tensorflow as tf x = tf.random.normal([4, 784]) net = t ...

  8. Kafka-JavaAPI(Producer And Consumer)

    Kafka--JAVA API(Producer和Consumer) Kafka 版本2.11-0.9.0.0 producer package com.yzy.spark.kafka; import ...

  9. LeetCode 876. Middle of the Linked List(获得链表中心结点)

    题意:获得链表中心结点.当有两个中心结点时,返回第二个. 分析:快慢指针. /** * Definition for singly-linked list. * struct ListNode { * ...

  10. 自定义更改 Xcode 新建 .h/.m 文件头部注释说明(文件名、工程名、作者、公司、版权等)信息

    使用 Xcode 新建工程文件时,或默认生成一套注释说明信息在 .h/.m 文件的头部,说明了创建这个文件的名称.工程名.日期.作者.公司.版权等信息 // // ___FILENAME___ // ...