2019护网杯baby_forensic

题目名称: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:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5",  0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 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]!=‘0‘ or line[1]!=‘0‘ or line[3]!=‘0‘ or line[4]!=‘0‘ or line[9]!=‘0‘ or line[10]!=‘0‘ or line[12]!=‘0‘ or line[13]!=‘0‘ or line[15]!=‘0‘ or line[16]!=‘0‘ or line[18]!=‘0‘ or line[19]!=‘0‘ or line[21]!=‘0‘ or line[22]!=‘0‘:
         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}

原文地址:https://www.cnblogs.com/wkzb/p/12286280.html

时间: 2024-08-30 15:27:46

2019护网杯baby_forensic的相关文章

[护网杯 2018]easy_tornado

[护网杯 2018]easy_tornado 打开之后看到几个文件夹分别提示 /flag.txt flag in /fllllllllllllag /welcome.txt render /hints.txt md5(cookie_secret+md5(filename)) 尝试对file传参跳到 /error?msg=Error 显示Error tornado.render.error=error,马上想到ssti.然后开始尝试,发现ban了很多符号 ",',(,),_,%,*,+,-,/,=

护网杯web

首先进入网页后,观察到有sign up 点击sign up 进行注册 再点击sign in 进行登录 进入一个买辣条的界面,可以知道,5元可以买一包大辣条,多包大辣条可以换一包辣条之王,多包辣条之王可以换Flag 进入info查看余额,发现,至多可以买4包大辣条,不满足辣条之王的兑换 尝试条件竞争打开burpsuit点击大辣条的购买窗口,抓取数据 发送到Intruder,点击Positions,点击clear 点击Payloads 这里算是纠结了一下,最后想到利用条件竞争,试验发现一个账户的两个

护网杯一道crypto

1 import os 2 def xor(a,b): 3 assert len(a)==len(b) 4 c="" 5 for i in range(len(a)): 6 c+=chr(ord(a[i])^ord(b[i])) 7 return c 8 def f(x,k): 9 return xor(xor(x,k),7) 10 def round(M,K): 11 L=M[0:27] 12 R=M[27:54] 13 new_l=R 14 new_r=xor(xor(R,L),K

2019强网杯部分misc&web

0x01 前言 前两天菜鸡+x和几个大哥算是正式参加了一次ctf的线上赛,也是第一次参加这种比赛(前一段时间巨佬也给了我们一个西班牙的比赛,不过不算是正式参赛,做题的时候,比赛已经结束了),没想到出师不利,菜的一B,除了一个证明你签了到的签到题,一道题也没有弄出来,今天的我也是一个卑微的弟弟啊!比赛结束了,大佬们开始放writeup了,准备有些题目还是再看一看,复现一下. 0x02 鲲or鳗orGame 最先开始做的便是这道MISC的题目“鲲or鳗orGame” 进入网站后,发现鲲or鳗orGa

刷题记录:[护网杯 2018]easy_laravel

参考链接:Laravel 相关几道题目复现 sql注入 username的sql注入,一眼就能看出来,但是admin的密码是加密过的,没法直接得到密码 public function index(Note $note) { $username = Auth::user()->name; $notes = DB::select("SELECT * FROM `notes` WHERE `author`='{$username}'"); return view('note', com

2018护网杯easy_tornado(SSTI tornado render模板注入)

考点:SSTI注入 原理: tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式. 网上看到的例子: #!/usr/bin/env python # -*- coding:utf-8 -*- from tornado.web import UIModule from tornado import escape class cust

强网杯web复现

平台:https://buuoj.cn/challenges 2019 强网杯的题目总结 UPLOAD wp 大佬的 wp : https://www.zhaoj.in/read-5873.html 个人总结 只能上传正常的图片,非 png 格式会自动转化为 png,图片被保存在 upload 目录下 本题是 www.tar.gz 泄露,源码泄露总结点击此处 函数流程: 没有登陆时,跳转到 index.php,进行注册登陆.login_check 函数将 cookie('user') 赋给 pr

CTF 两道web整数溢出题目(猫咪银行和ltshop)

①猫咪银行: (2018中科大hackgame) 一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个. 理财是只能买入TDSU才可以获得收益.我们先上来直接把CTB全部换成TDSU. 上边是我们花了所有TDSU:66060买了19分钟后的收益.(因为一个账号最多存在20分钟,计算你用脚本极限也不能买20分钟,必须留一分钟用来换TDSU和买入,取出等操作) 还是不行,算上收益的钱1200231也不够买20个CTB. 考虑买RMX是否存在汇率差. 发现一个CTB57个RMX,一个

护网行动2019

在信息化社会中,计算机和网络在军事.政治.金融.商业.人们的生活和工作等方面的应用越来越广泛,社会对计算机和网络的依赖越来越大.如果网络安全得不到保障,这将给生产.经营.个人资产.个人隐私等方面带来严重损害,甚至会使金融安全.国防安全以及国家安全面临非常严重的危险."护网行动"是国家应对网络安全问题所做的重要布局之一. "护网行动"怎么来的? 1.网络安全态势严峻 当前,随着大数据.物联网.云计算的快速发展,愈演愈烈的网络***已经成为国家安全的新挑战,国家关键信息