bugku——分析(流量分析)题解

目录

1,flag被盗

2,中国菜刀

3,这么多数据包

4,手机热点

5,抓到一只苍蝇

6,日志审计

7,weblogic

8,信息提取(超详细)

9,特殊后门


1,flag被盗

ctrl + f 打开搜索框,搜flag ,找到 93 个数据包里有 flag.txt字样,

右键,追踪 TCP数据流,在其中看到了 flag:

flag{This_is_a_f10g}

2,中国菜刀

在 分组字节流中搜索 flag 字符串,找到第8 个包,追踪tcp数据流

看到了 flag.tar.gz,猜测流量包中隐藏了一个压缩包,

用binwalk 审查一下:发现了一个压缩包,分离

key{8769fe393f2b998fa6a11afe2bfcd65e}

3,这么多数据包

前边的都是些无关紧要,一直到NO104,下面的再干嘛?

源ip138一直向目标ip159发送syn握手包,想要建立连接,其实就是端口扫描,原理就是,想和你某个端口建立连接,然后看这个端口的回复的类型来看下是否开放了此端口。我们现在就可以知道138是客户端,159是服务器端了。红色的包是服务器向客户端回复的信息,代表此端口没有开放。

其实就是在扫描服务器 159的开放端口

看到 中间有一段 是与 服务器 3389的通信

说明服务器端的 3389端口开放,跟踪数据流

发现大串的无用乱码:

直接搜索 tcp

然后拉到最后 扫描结束后发送的数据包,4444端口和 1024 的端口之间的通信,追踪数据流,还是没有发现什么

然后又发现了 12345 端口和 35800之间的通信  追踪数据流 发现了一段 base 64密文 解密后得到flag

CCTF{do_you_like_sniffer}

4,手机热点

方法一: 不管流量包中有没有隐藏文件,先分离一下看看,直接用foremost分离一下

分离出来 一个压缩包,解压出来一张图片,flag.jpg

方法二:正常思路,题目描述说是共享手机热点,然后向电脑发送了一些东西,这里应该是通过 蓝牙协议 (obex)发送得文件

过滤出 obex协议的包,

导出分组字节流 保存为 123.rar 解压出来一张图片 flag.jpg

 

5,抓到一只苍蝇

首先在 分组字节流中 搜索一下 字符串 flag 找到第一个 包,追踪一下数据流 ,

然后就看到了上述信息,知道了应该是在用 qq邮箱传输文件,

文件的信息: fly.rar  文件的大小为 525701

{"path":"fly.rar","appid":"","size":525701,"md5":"e023afa4f6579db5becda8fe7861c2d3","sha":"ecccba7aea1d482684374b22e2e7abad2ba86749","sha3":""}

既然知道了在上传文件,肯定要用到 http的request的 POST方法

在过滤器中 输入

http && http.request.method==POST

然后找到这5个包,第一个包是 文件的信息,后面5个包为数据

分别查看其中 date 的长度:

前四个 为 131436 最后一个为 17777

所以 131436*4 +17777=527571  与第一个包给出的 fly.rar的长度 525701 差 1820

因为每个包都包含头信息,1820/5 = 364

所以每个包的头信息为 364

接下来导出数据包:

wireshark->文件->导出对象->http->选择save对象

将对应的包 分别save 为 1 2 3 4 5

将这五个包拖进 kali中 

执行:

dd if=1 bs=1 skip=364 of=11dd if=2 bs=1 skip=364 of=22dd if=3 bs=1 skip=364 of=33dd if=4 bs=1 skip=364 of=44dd if=5 bs=1 skip=364 of=55

将数据包的头部的 364个字节去除  得到 11 22 33 44 55

将这五个包合并

cat 11 22 33  44 55 > fly.rar

查看一下 flag.rar的md5值是否正确

md5sum fly.rar

正确

解压,跳出提示文件头损坏,并且要求输入密码

知道是伪密码,用winhex打开,修改文件头,将 84 改为 80,保存

解压得到,flag.txt 打开一堆乱码,直接用 foremost分离一下,得到很多的图片

发现一张二维码,扫描后得到flag

flag{m1Sc_oxO2_Fly}

 

其实我刚开始不是这么做的,我是直接用foremost分离  流量包 ,然后分离出来几张图片 和一个压缩包,尝试解压

爆出一堆错误,并提示输入密码,将 文件头的 84 修改为 80 后依然打不开 ,,可能是 这个文件中还包含了其他错误信息,然后就换用上面的方法了

 

6,日志审计

用 notepad++ 打开 日志文件,先用 插件中的 MIME Tool  中的 URL decode 解一下码

然后就能清楚的看出来 是在进行 sql 盲注操作,

进一步审查,还可以看到每一条语句 返回的状态码 ,并且知道 他是用的 二分法在进行 sql盲注

我需要做的就是找到 每一个 测试的字符的 最后一条状态码为 200 的 语句中的 ascii 值并记录下来

例如:

由于使用的是二分法,所以我们这里可以知道  flag的第 18 个字符的ascii 为  117+1  ,118

当然你你也可以用手工的方法,一个一个的记下 flag 每一个 字符的 ascii 值 (flag也就 25个字符,如果写不出代码的话)

当然最好是用脚本跑出来

我找了个脚本:

# coding:utf-8
import re
import urllibf = open('access.log', 'r')
lines = f.readlines()
datas = []
for line in lines:t = urllib.unquote(line)# 过滤出与flag相关,正确的猜解,这里只收集正确的猜解,而测试字符的ascii = 最后一个正确的猜解的ascii +1(这是二分法的一个隐藏规律)if '200 1765' in t and 'flag' in t: datas.append(t)flag_ascii = {}
for data in datas:matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)if matchObj:key = int(matchObj.group(1))value = int(matchObj.group(2)) + 1flag_ascii[key] = value  # 使用字典,保存最后一次猜解正确的ascii码flag = ''
for value in flag_ascii.values():flag += chr(value)print flag

解释一下:

t = urllib.unquote(line)            就是将 文本进行 urldecode 解码

if '200 1765' in t and 'flag' in t:   如果语句中有这两个字符串就直接将这个语句 存入 数组datas中
        datas.append(t)

matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)    在date 中搜索符合 正则表达的 字符串并 将匹配的字符串存入变量 matchObj 中

        key = int(matchObj.group(1))         取 变量matchObj 中 的第一个括号里的内容 (也就是上条语句中的 (.*?)中的内容)并转为10进制
        value = int(matchObj.group(2)) + 1     取 变量matchObj 中 的第二个括号里的内容,并转为 10 进制

 

得到 flag:flag{sqlm4p_15_p0werful}

 

7,weblogic

提示:

黑客攻击了Weblogic应用,请分析攻击过程,找出Weblogic的主机名。flag格式:flag{}

Tip:主机名为十六进制。

黑客的攻击过程:

weblogic 攻击流量审计。模拟了爆破weblogic登录密码,通过部署war包getshell,执行命令获取hostname的操作。

正常思路先在分组字节流中搜索 字符串 hostname

找到了两个 包  no.658 662

追踪流  然后搜索 hostname 

然后就找到了  

flag{6ad4c5a09043}

 

8,信息提取(超详细)

曾经在比赛中也遇过几乎一样的题,一直没有好好的写过一篇详细的博客,今天决定借助这个题好好记录理解一下这种类型的题

提示 : sqlmap

打开流量包,也观察到了 是 用sqlmap进行的 sql盲注的过程,用的是二分法

为了更好的理解 注入的过程 我们首先把 注入语句提取出来,这样方便观察

 

过滤http流量  ,然后   文件 》导出分组解析结果 》为CSV      保存为 123.txt

用notepad++  打开 123.txt,可以看到语句语句中还是夹杂着很多的urlcode  

全选  , 然后   插件 》MIME Tools  》 url decode ,这样就把URLcode转为更直观的 ascii了

然后再 来理解用 二分法 进行sql盲注的过程

以flag 的第一个字符为 例 :

绿色框中的数字  代表是测试第几个 字符

红色框中的数字  代表 与当前测试的字符的ascii值 相比较的 值

粉色框中数字  代表返回的数据的长度(一会我们要依据这个来判断上面的语句是否正确)

ascii有 128个所以从  64 开始判断,然后是96(64和128的中间值),说明>64是正确的 ,才会取96,然后是 80,80小于96,说明>96是错误的,所以才会取 64和96 的中间值 80,然后是 72 ,说明>80是错误的,取80和64之间的中间值72,然后是76,说明>72是正确的,才会取 72 和80之间的中间值76,然后是 74,说明>76是错误的,才会取 72 和76的中间值 74,然后是73,说明>74是错误的,才会取 72 和 74的中间值 73

至于 > 73 语句是否正确,关系到我们最后的取值,

我们已经知道了 第一个字符 的ascii值 的范围 为  72< x <= 74,  至于是 73 还是 74 ,需另做判断:

若 > 73 正确, 则 x = 74  第一个字符 的ascii值为 74  就是 J

若 >73  错误,则  x = 73 就是 I

由于我们上面已经知道了  >64 是正确的    返回包的数据长度是 467

                                         >96 是错误的    返回包的数据长度是 430

                                         >80 是错误的    返回包的数据长度是 430

                                         >72 是正确的    返回包的数据长度是 467

                                         >76 是错误的    返回包的数据长度是 430

                                         >74 是错误的    返回包的数据长度是 430

可以看到 当判断语句正确时 ,返包的数据长度 是 大于 430的 ,错误时 是小于等于 430

然后看到  最后一条语句  >73 的返回值 为 430,说明与错误, 第一个字符的ascii 为  73  

 

理解了过程就好做多了

我们只需要 找到 当前测试字符的  最后一条的测试语句的 ascii值  和 返回值

如果返回值大于 430  则   当前测试字符的ascii 值 为   最后一条测试语句的ascii值

如果返回值 小于等于 430 则 当前测试字符的ascii值 为  最后一条测试语句的ascii   +   1

 

方法一:(当flag 较短的时候)

当flag较短的时候,我们肯定是用手工 一个一个记下 每个字符的ascii值 比较快

方法二: (当flag 较长时)

当flag 为 25个字符以上的时候,手工就显得太费劲,不如写个脚本来的快,就想本题一样,flag的长度为 33

上脚本:

import re
import urllib.parse# 更改为自己从wireshark提取出的csv文件地址
f = open(r"123.txt")
lines = f.readlines()
datas = []
# 转码, 保存进datas
for line in lines:datas.append(urllib.parse.unquote(line))
lines = []  # 懒得改, 就复用一下, 这个lines保存注入flag的url
for i in range(len(datas)):  # 提取出注入flag的urlif datas[i].find("isg.flags ORDER BY `value` LIMIT 0,1),1,1))>64") > 0:lines = datas[i:]break
flag = {}
# 用正则匹配
macth1 = re.compile(r"LIMIT 0,1\),(\d*?),1\)\)>(\d*?) HTTP/1.1")
macth2 = re.compile(r'"HTTP","(\d*?)","HTTP/1.1 200 OK')
for i in range(0, len(lines), 2):  # 因为有返回响应, 所以步长为2get1 = macth1.search(lines[i])if get1:key = int(get1.group(1))  # key保存字符的位置value = int(get1.group(2))  # value保存字符的ascii编码get2 = macth2.search(lines[i + 1])if get2:if int(get2.group(1)) > 450:value += 1flag[key] = value  # 用字典保存flag
f.close()
result = ''
for value in flag.values():result += chr(value)
print(result)

为什么脚本中 判断的返回值取  450 呢? 因为 取430时,得出来的flag不对,仔细查看123.txt后,发现 其中还有一些错误的语句的返回 包  为 431 或者 432,所以就干纯粹取个 450 (433~460都可以)

(这再看不懂就考虑换专业吧)

得到flag:

ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}

 

9,特殊后门

乍一看,什么黑客后门的看起来挺吓人,其实非常简单,

直接在 分组字节流 中搜索字符串  flag :

直接找到第 252 包:

然后看下一个包,在相同位置有一个字符 f

然后在接下来的每一个包的相同位置都有 一个字符,收集起来就是flag

flag{Icmp_backdoor_can_transfer-some_infomation}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33465.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF 总结04:win11+冰蝎4.0.6安装[更新中]

问题描述 昨天在刷题的时候&#xff0c;发现可能需要下载冰蝎~ win11冰蝎4.0.6&#xff0c;本人安装的时候遇到了一些坑&#xff0c;所以在这里简单说一下~ 冰蝎简介 冰蝎是一个动态二进制加密网站管理客户端&#xff0c;它使用AES加密算法对流量进行加密&#xff0c;难以被…

微软宣布 AI 聊天机器人必应聊天已向所有人开放,使用方法说明

微软宣布 AI 聊天机器人必应聊天已向所有人开放&#xff0c;使用方法说明 先用chrome搜索必应的地址必应搜索&#xff0c;结果如下图所示&#xff1a; 点击了解详细信息&#xff0c;网页会跳转到微软新必应的介绍页面&#xff0c;如下所示&#xff1a; 到这里大家就应该知道怎…

人工智能实战项目(python)+多领域实战练手项目

人工智能实战项目 大家好&#xff0c;我是微学AI&#xff0c;本项目将围绕人工智能实战项目进行展开&#xff0c;紧密贴近生活&#xff0c;实战项目设计多个领域包括&#xff1a;金融、教育、医疗、地理、生物、人文、自然语言处理等&#xff1b;帮助各位读者结合机器学习与深…

chatgpt赋能Python-pythonheader

Python Header&#xff1a;为什么它对SEO很重要&#xff1f; 在网页开发和建立过程中&#xff0c;Python Header是一个非常重要的元素。Python Header是一个HTTP请求的部分&#xff0c;其中包含了对请求的描述&#xff0c;以及执行此请求所需的任何信息。因此&#xff0c;Pyth…

解决:闹钟设置的自定义歌曲响铃时不会播放仅震动【Apple Music】【iOS】

文章目录 1、问题描述2、解决策略3、Q&A4、感受5、Tips 1、问题描述 自带铃声和震动脑瓜子嗡嗡的&#xff0c;幸好有apple music&#xff0c;在闹钟中可以轻松地选择你放入资料库中的任意一首音乐作为铃声。 奇怪的是&#xff0c;闹钟响起&#xff0c;仅震动&#xff0c;没…

微信公众平台登陆小程序后,在 开发-开发者工具 下,找不到 腾讯云

新版的微信公众平台在 “开发”-“开发者工具”下面只有“腾讯位置服务”&#xff0c;并没有大家所说的腾讯云&#xff0c;没法开通腾讯云服务。根据官方所说是把入口隐藏起来了。 我找了好久终于找到怎么开通了&#xff1a; 先去腾讯云官网注册/登录&#xff0c;登录后左上角…

Web端实现定位(使用腾讯地图实现)

1、腾讯地图提供定位服务的API&#xff0c;官方网址&#xff1a; 点击打开链接 2、从腾讯地图API官网注册一个开发秘钥 3、根据官方文档引入js文件 <script type"text/javascript" src"https://3gimg.qq.com/lightmap/components/geolocation/geolocation.…

【腾讯云IM】即时通讯的登录,登出,用户列表,私聊,图片发送

uniapp即时通讯 1&#xff0c;初始化&#xff08;刚开始就紧跟着文档走&#xff09;2&#xff0c;App.vue中项目引入腾讯云&#xff0c;&#xff08;附上账号在其他地方登陆的监听&#xff09;3&#xff0c;登录前必需3.1&#xff0c;获取登录id3.2&#xff0c;生成userSig&…

腾讯云开发者平台

1.应用场景 轻量级代码托管产品, 2.学习/操作 2.1 介绍 官网: coding.net 腾讯云开发者平台是腾讯云与 CODING 共同为开发者打造的云端工具平台&#xff0c;旨在为更多的开发者带去便捷、高效的 开发体验&#xff0c;提供包括需求管理、代码编写、代码管理、代码运行的整套系…

上传图片到腾讯云(海外服务器)com.qcloud5.5.4版本

问题描述&#xff1a;上传图片至腾讯云服务器&#xff0c;存储桶Region一直在国内地址&#xff0c;访问正常的&#xff0c;新启一个项目&#xff0c;存储桶Region迁移到孟买ap-mumbai区域&#xff0c;出现上传不成功 问题原因&#xff1a; <dependency><groupId>…

微信小程序接入腾讯云实时音视频TRTC----基本使用

前言:虽然说的有点乱,我觉得有必要说一下什么是音视频与整体开发需要些什么东西,因为当时我也是不知道这是啥? .我的理解音视频就是类似微信视频通话的东西,以自己的角度来看,我与好友建立视频的步骤简单来讲就是我把我的视频信息推送到微信,微信处理发给我好友,然后我再将好友…

【新知实验室】手把手实现腾讯云音视频应用

腾讯云音视频是什么&#xff1f; 腾讯云音视频&#xff08;TRTC&#xff09;提供一站式视频解决方案&#xff0c;包括点播直播、实时视频通话、短视频等视频服务&#xff0c;广泛应用于在线视频、电商、游戏直播、在线教育等场景。实时音视频基于腾讯21年来在网络与音视频技术上…

TBS腾讯浏览服务的SDK接入

Share Only 版 引入依赖库compile com.jakewharton:butterknife:7.0.1&#xff0c;与项目本身无关&#xff0c;不喜欢findViewById而已&#xff0c;这里有个小坑&#xff0c;最新版本的butterknife结合插件使用可能会导致findViewById或者onClick绑定失败…将shareOnly版本的j…

web端对接语音通话(腾讯云)

实时音视频 实时语音通话(Web) - 场景实践 - 文档中心 - 腾讯云 按照要求注册腾讯云账号&#xff0c;跑通demo 1、集成TRTCCalling组件 // npm方式安装 npm install trtc-js-sdk --save npm install tim-js-sdk --save npm install tsignaling --save npm install trtc-calli…

新知实验室基于腾讯云实时音视频WEB端实验

腾讯实时音视频&#xff08;Tencent Real-Time Communication&#xff0c;TRTC&#xff09;主要用于互动直播和多人音视频。支持低延时直播观看、实时录制、屏幕分享、美颜特效、立体声等能力&#xff0c;还能和直播 CDN 无缝对接&#xff0c;适用于互动连麦、跨房 PK、语音电台…

腾讯云IM-SDK集成(web端)完成IM登录

一脸懵逼的看着腾讯云的文档&#xff0c;完成了所谓的采坑之旅 &#xff08;1&#xff09;很多人估计公司也需要用到聊天&#xff0c;以及音视频的功能&#xff0c;那么作为萌新的我&#xff0c;当然也是一来公司便得知需要用到这个技术&#xff0c;当时我是懵逼的&#xff0c…

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC 即时通信TIM官网地址 即时通信TIM SDK API文档地址 实时音视频TRTC官网地址 实时音视频TRTC SDK API文档地址 概念与可能造成疑惑的问题 SDK 是什么&#xff1f; Github 地址 腾讯云将底层与后台代码封装混淆之后生成…

腾讯云部署清华大学ChatGLM-6B实战

简介&#xff08;来自官方&#xff09; ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别…

Chat GPT的到来,对普通人来说是福还是祸?

AI机器人的功能可能比我们想象的更大&#xff0c;可以创作也可以模拟人类的语言行为&#xff0c;与人类进行自然的聊天交流。同时已经开始代替人类做一些基础的工作&#xff0c;未来可能代替更多的人类工作。人工智能的出现也值得我们人类自己深思&#xff0c;如果我们的工作被…

使用Mendeley和CvtCNKI进行中英文参考文献引用管理(含硕博论文)

在写学术论文和学位论文的时候&#xff0c;往往需要引用大量参考文献&#xff0c;以前博主的做法都是边写论文边把相关参考文献以word批注的形式列在侧边栏&#xff08;因为后面修改的时候可能还会有所变动&#xff09;&#xff0c;等论文定稿之后再手动对引用的相关参考文献编…