CTF——MISC——流量分析

CTF——MISC——流量分析

2023年7月31日发(作者:)

CTF——MISC——流量分析⽬录概括来讲在⽐赛中的流量分析有以下三个⽅向:1、流量包修复2、协议分析3、数据提取⼀、流量包修复⽐如⼀个流量包它的⽂件头也是对的,⾥边也没有包含其他的⽂件等等等等,但是就是打开出现⼀些未知的错误,这时候就要考虑对流量包进⾏修复。这类题⽬考察较少,通常都借助现成的⼯具例如PCAPFIX直接修复。⼆、协议分析此类⽅向需要对分析流量包⼯具所⽤的语法有⼀定的掌握,这⾥以wireshark为例,须掌握wireshark过滤器(捕捉过滤器与显⽰过滤器)的基础语法,从⽽更快更精准的获取指定的信息。捕捉过滤器:⽤于决定将什么样的信息记录在捕捉结果中,需要在开始捕捉前设置。显⽰过滤器:⽤于在捕获结果中进⾏详细查找,可以在得到捕捉结果后进⾏更改捕捉过滤器基础语法Protocol Direction Host(s) Value LogicalOperations other expressiontcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128Protocol可能的值: ether, fddi, ip, arp, rarp, decnet,lat, sca, moprc, mopdl, tcp and udp,如果没有特别指明是什么协议,则默认使⽤所有⽀持的协议。Direction可能的值: src, dst, src and dst, src or dst,如果没有特别指明来源或⽬的地,则默认使⽤ “src or dst” 作为关键字。Host(s)可能的值: net, port,host, portrange,如果没有指定此值,则默认使⽤”host”关键字。例如,”src 10.1.1.1”与”src host 10.1.1.1”相同。Logical Operations可能的值:not, and, or否(“not”)具有最⾼的优先级,或(“or”)和与(“and”)具有相同的优先级“not tcp port 3128 and tcp port23”与”(not tcp port 3128) and tcp port23”相同。举例分析:tcp dst port 3128 //⽬的TCP端⼝为3128的封包。ip src host 10.1.1.1 //来源IP地址为10.1.1.1的封包。host 10.1.2.3 //⽬的或来源IP地址为10.1.2.3的封包。src portrange 2000-2500//来源为UDP或TCP,并且端⼝号在2000⾄2500范围内的封包not icmp //除了icmp以外的所有封包。显⽰过滤器基础语法Protocol String1 String2 ComparisonOperator Value Logical Operations other expressionProtocol可以使⽤⼤量位于OSI模型第2⾄7层的协议。在Expression中可以看到,例如,IP,TCP,DNS,SSHString1,String2可选择显⽰过滤器右侧表达式,点击⽗类的+号,然后查看其⼦类Comparison Oerators可以使⽤六种⽐较运算符举例分析:snmp || dns || icmp //显⽰SNMP或DNS或ICMP封包 == 10.1.1.1 //显⽰源或⽬的IP为10.1.1.1的封包 != 10.1.2.3 and !=10.4.5.6 //显⽰源不为10.1.2.3并且⽬的不为10.4.5.6的封包 == 25 //显⽰来源或⽬的TCP端⼝号为25的封包 == 25 //显⽰⽬的TCP端⼝号为25的封包如果过滤器语法是正确的,表达式背景为绿⾊,否则为红⾊三、数据提取这⼀块是流量包中另⼀个重点,通过对协议分析,找到题⽬的关键点,从⽽对所需要的数据进⾏提取。Wireshark⽀持提取通过http传输(上传/下载)的⽂件内容,⽅法如下:⾃动提取通过http传输的⽂件内容⽂件->导出对象->HTTP在打开的对象列表中找到有价值的⽂件,如压缩⽂件、⽂本⽂件、⾳频⽂件、图⽚等,点击Save进⾏保存,或者Save All保存所有对象再进⼊⽂件夹进⾏分析。⼿动提取通过http传输的⽂件内容选中http⽂件传输流量包,在分组详情中找到data,Line-based text, JPEG File Interchange Format, data:text/html层,⿏标右键点击 – 选中导出分组字节流。来源: 简简作者: 简简链接:

本⽂章著作权归作者所有,任何形式的转载都请注明出处。如果是菜⼑下载⽂件的流量,需要删除分组字节流前开头和结尾的X@Y字符,否则下载的⽂件会出错。⿏标右键点击 – 选中 显⽰分组字节 在弹出的窗⼝中设置开始和结束的字节(原字节数开头加3,结尾减3)

最后点击Save as按钮导出。

例题:1,题⽬:Cephalopod(图⽚提取)题⽬来源:XCTF 3rd-HITB CTF-2017考点:图⽚提取题⽬信息:()c中zxz中z2,题⽬:特殊后门(icmp协议信息传输)题⽬来源:第七届⼭东省⼤学⽣⽹络安全技能⼤赛考点:字符串搜索,icmp协议信息传输题⽬信息:(backdoor++.pcapng)打卡数据包,先在字节流中 搜索 flag 字符串 :搜索到了 ⼀段连续的数据包 ⾥⾯都有flag字符串

发现下⾯每⼀个 包⾥ 都有⼀个 字符:⼀个⼀个收集后得到:flag{Icmp_backdoor_can_transfer-some_infomation}⼩知识点:ICMP(Internet Control Message Protocol)Internet控制协议,它是的⼀个⼦协议,⽤于在IP、器之间传递控制消息。控制消息是指不通、是否可达、是否可⽤等⽹络本⾝的消息。这些控制消息虽然并不传输⽤户数据,但是对于⽤户数据的传递起着重要的作⽤,ICMP协议是⼀种⾯向⽆连接的协议,⽤于传输出错报告控制信息。它是⼀个⾮常重要的协议,它对于具有极其重要的意义。

3,题⽬:⼿机热点(蓝⽛传输协议obex,数据提取)题⽬来源:第七季极客⼤挑战考点:蓝⽛传输协议obex,数据提取题⽬信息:(Blatand_)题中说⽤ 没流浪 向电脑传了⽂件 那肯定是 ⽤的蓝⽛ 蓝⽛协议 为 obex协议帅选出 obex 协议包 :发现 有⼀个包 ⾥有⼀个 rar压缩包:要分离出 这个 rar 包:⽅法⼀:直接复制 数据块 然后复制到winhex中 转存为 rar

复制数据块 as Hex stream > 在winhex中粘贴 为 ASCII HEX > 删除前⾯的 多余信息 > 保存为 rar⽅法⼆ :⽤formost 分离:分离出来好多东西,不过我们⽬标是rar包得到⼀张:4,题⽬:想蹭⽹先解开密码(⽆线密码破解)题⽬来源:bugku考点:⽆线密码破解题⽬信息:() wifi 连接认证 的重点在于 WAP的 四次握⼿过程 ,就是 EAPOL 协议的包,存在 握⼿过程:直接进⾏爆破:先⽤ linux中的 crunch ⽣成⼀个字典:然后 ⽤ aircrack-ng 进⾏爆破:得到 WiFi密码5,我的的教练也想打CTF打开流量包,直接搜 字符串 flag ,找到很多 包,仔细看这些包的info ,发现是 sql 注⼊语句 布尔注⼊:鉴于 sql 注⼊的 布尔注⼊ 的原理:逐个字母爆破要查询的字符,我们可以把 查询到的每个字符 收集起来就能 得到 flag了注: 爆破每个字符的最后⼀个 查询语句 对应的字符就是 正确的字符本题的爆破语句 :id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=33 %23意思是: 截取 keyid 的第⼀个字符 ,并转化为 ascii 与 33 进⾏⽐较,正确 就停⽌,不正确就继续试 34,35……按照这个规律 得到 keyid 的 所有字符对应的 ascii :

102 108 97 103 123 99 50 98 98 102 57 99 101 99 100 97 102 54 53 54 99 102 53 50 52 100 48 49 52 99 53 98 102 48 52 54 99 125将其转化为 字符就可以了:

chars = "102 108 97 103 123 99 50 98 98 102 57 99 101 99 100 97 102 54 53 54 99 102 53 50 52 100 48 49 52 99 53 98 102 48 52 54 99 125"char = (" ")for c in char : print(chr(int(c)),end="")flag{c2bbf9cecdaf656cf524d014c5bf046c}⼤佬的脚本直接跑:import pysharklastt=256flag="flag is "capa=pture('',only_summaries=True,display_filter="t == 1")for arps in capa: now=eval(str(arps).split(" ")[7].split('=')[2].split('%')[0]) if now < lastt & lastt <= 255: flag+=chr(lastt) lastt=nowflag+='}'print(flag)上⾯的看不太懂,贴⼀个⾃⼰写的:(过滤 http 然后 ⽂件 》 导出分组解析结果 》 为 CVS ,保存为 )import reimport = open(r'')file = nes()datas = []#urldecodefor i in file: (e(i))lines = []#提取注⼊flag的语句for i in range(0,len(datas)): if datas[i].find("flag limit 0,1),1,1))=32# HTTP/1.1") > 0: lines = datas[i:] breakflag = {}macth = e(r"limit 0,1),(.*?),1))=(.*?)# HTTP/1.1") #匹配我们需要的信息块for i in range(0,len(lines),2): obj = (lines[i]) if obj: key = int((1)) #获取字符的位置 value = int((2))#获取字符的ascii值 flag[key] = value #不断的更新,进⽽保留最后⼀个()result = ''for value in (): result += chr(value)print(result)

本⽂为基础篇,如果想进⼀步提升 流量分析的⽔平,可以参考我的另⼀篇⽂章:

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690779660a424059.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信