「CTF流量题指南:从压缩包到USB,还原数据全过程」

admin 2025年5月19日09:17:08评论1 views字数 4508阅读15分1秒阅读模式

该公众号致力于分享各种工具和学习记录,与师傅共同进步

[安洵杯 2019]Attack [ 压缩包 ]

用wireshark打开,过滤器语句 http contains "flag"看看有没有结果:

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img
「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

有结果肯定要追踪http流,(我自己做的时候只关注到了flag.txt)却没关注到 PK(zip压缩包的标志)

我的第一想法肯定要将它给拿出来进行分离zip获得flag.txt的

但看了Wp:直接分离这个流量包(附件)即可:用kali中的工具foremost -T Attack.pcap

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

获得zip压缩包,但是有加密,这个压缩包的 属性 -> 注释 中提示信息,指向了管理员的密码

哪里获取管理员密码呢,看Wp说是 dmp文件

dmp后缀文件是windows系统中的错误转储文件,当windows发生错误蓝屏的时候,系统将当前内存[含虚拟内存]中数据直接写到这类文件中去,方便定位故障原因。 里面包含了主机用户密码信息

经过过滤器,发现是有dmp的信息的 [ 之后感觉我这个过滤语句不太好,dmp只是三个字符而已,有可能出现偶尔情况,加个. ] [我不知道通配符是什么,我试了 *.dmp 没结果]

发现有,就导出

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img
「CTF流量题指南:从压缩包到USB,还原数据全过程」
img
「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

接下来需要用到工具 mimikatz 下载链接

https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20220919

//提升权限
privilege::debug
//载入dmp文件
sekurlsa::minidump lsass.dmp
//读取登录密码
sekurlsa::logonpasswords full
「CTF流量题指南:从压缩包到USB,还原数据全过程」
4-2-06

我不知道为什么 我输入提升权限的那句代码会报错,

但是输入后面的代码正常运行。

然后就会看到密码了。Password:

[NewStarCTF 公开赛赛道]最后的流量分析 [ tshark ]

tshark的使用:http://linux.51yip.com/search/tshark

tshark -r sqli.pcap -T fields -Y "http.request.method==GET or frame.len>765" -e "frame.len" -e "http.request.uri.query.parameter" > data.txt

-r 解析的流量文件

-T 指定输出的格式,fields => 只输出符合条件的字段

-Y 用于过滤流量包 => 上面的-Y表示 只取GET方法的或者流量包长度大于765的

-e 要输出的字段 => 上面的-e表示 输出流量包长度以及流量包中uri中的参数

> 重定向,这里表示将输出的东西 重定向到一个data.txt文件内

第一次用这个tshark 看手册吧.

from urllib.parse import *
import re

comment = ''
with open("E:OneDrive桌面CTFdata.txt"as f:
 lines = f.readlines() # 读取txt文件中的每一行
for i in range(len(lines)): # len(lines)->读取的行数
# print(lines[i])
if int(lines[i][:3])>765:
   comment += re.findall(r'"(.)"', unquote(lines[i-1]))[0# 观察得到的txt文本,当出现>768的行数,上一行双引号中的内容就是flag的值 => 正是因为我们观察到了这个,才通过python来得到这个内容
# unquote -> 解码url编码的字符串
# r'' -> 将转义字符当做普通字符
# . 通配符
print(comment)

USB流量 - 键盘流量

附件 https://wuyong.lanzout.com/ihBPQ0uug8id

用tshark获取其中的数据

tshark -r usb.pcap -T fields -e usb.capdata | sed '/^s*$/d' > usbdata.txt

-> -r 是要解析的文件名

-> -T 是选择以什么形式输出 => fields 以字段形式输出,意味着只显示捕获数据中的特定字段,而不是整个数据包

-> -e usb.capdata 告诉tshark输出与USB相关的数据,

-> | 这是一个管道符,它将tshark输出传递给 sed命令

-> sed是流编辑器,用于处理文本流,后面这个 /^s*$/d 是正则表达式,删除所有空行

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

将获取到的数据没两个之间用:隔开

# 给每一行的数据 俩俩 用冒号隔开
f = open("E:\OneDrive\桌面\CTF\Misc流量\键盘\usbdata.txt"'r')
f1 = open("E:\OneDrive\桌面CTF\Misc流量\键盘\out.txt"'w')
# 读取每一行 进行去空,
while1:
    a = f.readlines()
for i in range(len(a)):
        a[i] = a[i].strip()
# print(a)
# if a[i]:
# print(len(a[i]))
if len(a[i]) == 16:
# print(f"[*] Success {i}")
            out = ''
for j in range(0, len(a[i]), 2):
if j+2 != len(a[i]):
                    out += a[i][j] + a[i][j+1] + ":"
else:
                    out += a[i][j] + a[i][j+1]
            f1.write(out)
            f1.write("n")
else:
break

将文中的数据还原成键位

#最后用脚本提取  键盘数据 -> 字符
# print((line[6:8])) #输出6到8之间的值
#取出6到8之间的值
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("E:\OneDrive\桌面\CTF\Misc流量\键盘\out.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)) 
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)
「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

flag{7200[DEL]53[DEL]93}

USB流量 - 鼠标数量

先用tshark获取

tshark -r usb2.pcap -T fields -e usb.capdata | sed '/^s*$/d' > usbdata.txt

将数据通过:分隔开

# 将上面的文件用脚本分隔,加上冒号;
f = open("E:\OneDrive桌面\CTF\Misc流量\鼠标\usbdata.txt"'r')
f1 = open("E:\OneDrive桌面\CTF\Misc流量\鼠标\out.txt"'w')
while1:
  a=f.readline().strip()
if a:
if len(a)==8:#键盘流量的话len为16鼠标为8 
      out=''
for i in range(0,len(a),2):
if i+2 != len(a):
          out+=a[i]+a[i+1]+":"
else:
          out+=a[i]+a[i+1
      f1.write(out) 
      f1.write('n'
else
break
f1.close()

通过脚本转换成图片

from PIL import Image
img = Image.new('RGB',(2000,2000),(255,255,255))#创建Image对象
f =open("E:OneDrive桌面CTFMisc流量鼠标out1.txt")#xy.txt文件 
for line in f.readlines():
    point =line.split()
    img.putpixel((int(point[0]),int(point[1])),(0,0,0))#读取文件中的每一行,并修改像素 
f.close() 
img.show()
「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

还可以通过gnuplot软件来生成图形,(windows和linux均可,都可以下载)

我是在windows下安装的,是个 exe软件,打开之后

plot ‘filepath’

我是直接放在当前目录了

生成之后用画图软件翻转一下即可

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

Buu - TLS流量分析

了解学习OSI模型TCP/IP模型了解学习OSI模型TCP/IP模型

学习 SSL/TLS会话流量分析

过滤http流量

发现有个数据包中有个log文件

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

保存到本地为1.log,然后导入TLS的秘钥中

「CTF流量题指南:从压缩包到USB,还原数据全过程」
img

再过滤http流量,发现多了一些流量,然后其中有一个保存有flag

往期推荐

MD5攻击全家桶:弱比较、数组绕过、长度扩展、碰撞攻击通通拿下!

【应急分析复盘】Solar月赛单机取证题解析:从日志到哈希,5 个 flag 完整还原攻击链!

HackMyVM - PyCrt

HTB - Planning

原文始发于微信公众号(夜风Sec):「CTF流量题指南:从压缩包到USB,还原数据全过程」

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月19日09:17:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   「CTF流量题指南:从压缩包到USB,还原数据全过程」https://cn-sec.com/archives/4078832.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息