目录标题
- [鹤城杯 2021流量分析</font>](#[鹤城杯 2021]流量分析)
- [NISACTF 2022流量包里有个熊](#[NISACTF 2022]流量包里有个熊)
- [CISCN 2023 初赛被加密的生产流量](#[CISCN 2023 初赛]被加密的生产流量)
鹤城杯 2021流量分析
观察发现,布尔盲注的流量包分析


frame.len == 978(过滤长度为978的包)或者http and frame.len==978

plain
import re
#Request URI: http://192.168.246.1/ctf/Less-5/?id=1'%20and%20ascii(substr((select%20flag%20#from%20t),1,1))=102--+
nums = []
obj1 = re.compile(r"1\)\)=(?P<num1>.*)\b",re.S)#开启贪婪模式匹配这里一定要使用.*贪婪模式 如果用.*?可能匹配失败 \b代表结尾
def getAscii():
with open("re.txt", "r", encoding="utf-8") as f:
for line in f.readlines():
line = line.strip()
result = obj1.finditer(line)
for it in result:
num = it.group("num1")
nums.append(num)
def getflag():
flag = ""
for i in nums:
i = chr(int(i))
flag = flag + i
print(flag)
if __name__ == '__main__':
getAscii()
getflag()
或者
plain
import re
s = r"from%20t\),([0-9]*),1\)\)=([0-9]*)"
pat = re.compile(s)
f = open("timu.pcapng","rb")
st = f.read().decode("utf-8","ignore")
lis = pat.findall(st)
flag = ['' for i in range(1000)]
for t in lis:
flag[int(t[0])] = chr(int(t[1]))
for i in flag:
print(i,end="")
直接运行即可
NISACTF 2022流量包里有个熊
做着很难受!!!根据提示改包后缀,或者

找png,jpg等图片后缀,有几个jpg结果

或者直接binwalk -e(有没有文件后缀都一样)

然后再找,右键tcp追踪流,原始数据,另存为

拖入010,搜索JPG前缀FF D8 FF ,将之前删去

l另外一个导出还发现一个rar,图示部分还要删除FFD9

实际就这俩

Linux tree命令用于以树状图列出目录的内容。

外层base64,解出为假
内层,ROT13解码发现FFD8 JPG图片文件头数据,网站http://www.mxcz.net/tools/rot13.aspx(rot密码其实可以看作是凯撒密码的一种变式
,本质都是移位运算)
十六进制转图片

CISCN 2023 初赛被加密的生产流量
某安全部门发现某涉密工厂生产人员偷偷通过生产网络传输数据给不明人员,通过技术手段截获出一段通讯流量,但是其中的关键信息被进行了加密,请你根据流量包的内容,找出被加密的信息。 得到的flag使用NSSCTF{}格式提交。
一般Linux里为.pcap,Windows里为.pcapng。根据经验看看是否flag存在于TCP流中


但是在这博客里学到了一些CISCN2023被加密的生产流量
plain
# -*- coding = utf-8 -*-
# @Time : 2023/5/27 9:50
# @Author : Leekos
# @File : 被加密的生产流量.py
# @Software : PyCharm
import pyshark
def get_code():
captures = pyshark.FileCapture("modbus.pcap")
func_codes = {}
for c in captures:
for pkt in c:
if pkt.layer_name == "modbus":
func_code = int(pkt.func_code)
if func_code in func_codes:
func_codes[func_code] += 1
else:
func_codes[func_code] = 1
print(func_codes)
if __name__ == '__main__':
get_code()
出

功能码为6(代表预置单个寄存器)的modbus协议数据包有16个,很可疑,于是我们使用wireshark过滤:
plain
modbus.func_code == 6 && modbus.request_frame
Data的值好像有用,16进制,我们将这些data拼接起来,16进制转字符串
虽然没用...
本文内容仅为个人经验分享,仅供参考,不构成专业建议。本人不对内容准确性做保证,读者据此操作产生的风险自行承担。文中第三方素材版权归原作者,如有侵权请联系删除。