第二届“陇剑杯”网络安全大赛线上赛write up2023

2023-11-05 22:20

本文主要是介绍第二届“陇剑杯”网络安全大赛线上赛write up2023,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.HW

hard_web_1

题目内容:服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开(如服务器开放了80 81 82 83端口,则答案为80,81,82,83)过滤器:ip.dst == 192.168.162.188 and tcp.connection.synack

解法一:

键盘按住向下,一个一个看,能看到 80, 888, 8888 

答案:80,888,8888

ip.dst是指IP报文中的目标IP地址。在计算机网络中,每个设备都有一个唯一的IP地址,用于标识其在网络中的位置。发送数据时,数据包会被封装成IP报文,并通过网络传输到目标设备。ip.dst即表示这个IP报文的目标设备的IP地址。

筛选出且TCP连接为SYN-ACK的网络数据包是为了检测网络中的活动主机和端口。在TCP三次握手过程中,当客户端发送SYN包给服务器时,服务器会回复一个SYN-ACK包作为确认。通过筛选出这种类型的数据包,可以识别哪些主机和端口处于活动状态,并进一步监测网络连接的建立和关闭情况。

此外,筛选出SYN-ACK包还可以帮助网络管理员进行网络安全分析。攻击者通常会发送大量的SYN包来进行端口扫描,以寻找可能存在的漏洞。通过筛选出SYN-ACK包,管理员可以确定哪些连接是成功建立的,并对非法扫描行为进行识别和响应。

总之,筛选出并分析TCP连接为SYN-ACK的网络数据包有助于网络管理和安全监测。

解法二

还有另一种过滤语法:

从一道题分析Nmap SYN/半连接/半开放扫描流量_syn包识别nmap流量_末 初的博客-CSDN博客TCP扫描确认端口开放的标志就是返回SYN+ACK的包,所以只需要过滤SYN、ACK状态都为1的包即可

tcp.flags.syn==1 and tcp.flags.ack==1

答案:80,888,8888

解法三:hw-典型哥斯拉流量

【流量分析】Godzilla分析_王俊凯迷妹的博客-CSDN博客

(ip.src == 192.168.162.180 ) && (ip.proto == 6)

hard_web_2

解法一:

过滤http发现这里有个shell.jsp

 右键追踪HTTP流,可以看到shell.jsp的内容,哥斯拉AES加密的shell
PS:选择HTTP流是因为经过gzip解码的,如果是追踪TCP流还需要解码gzip

那么经过shell.jsp的流量就是AES加密过的,密钥已知:748007e861908c03 

 选择原始数据,以0d0a0d0a请求体/响应体请求头/响应头的界限

“0d 0a”这两个字符是什么涵义_0d0a_liuyukuan的博客-CSDN博客

然后直接丢 CyberChef 梭哈

 能解密流量了,就慢慢看过找flag即可,读取flag在tcp.stream eq 20053

 

flag{9236b29d-5488-41e6-a04b-53b0d8276542}

 解法二用脚本:

【流量分析】Godzilla分析_王俊凯迷妹的博客-CSDN博客

hard_web_3

 密码一般是作为请求包的请求头,密钥md5后前16个作为key,也就是 xc=748007e861908c03,使用cmd5解密得到 14mk3y

可能有人说这个cmd5收费,还有办法,那就是爆破,这个出题人的预期解就是爆破去解题:

import requests
import hashlib
dic = "abcdefghijklmnopqrstuvwxyz0123456789"
for i in dic:for j in dic:for k in dic:for l in dic:s='1'+i+j+k+l+'y'md5=hashlib.md5(s.encode('utf-8')).hexdigest()if '748007e861908c03' in md5[:16]:print(s)print(md5)break

2.SS

sevrer save_1

过滤http,前面都是爆破的干扰流量,直接看到后面

从这个/helloworld/greeting开始追踪TCP流,直接搜索引擎检索Payload关键字即可锁定CVE编号

sevrer save_2 

继续追踪TCP流,在tcp.stream eq 106,即可发现反弹shell的IP和端口 

 

 192.168.43.128:2333

sevrer save_3

 /home/guests/下发现一个main文件,是ELF可执行文件

 main

sevrer save_4

生成的用户名和密码,直接查看/etc/passwd以及/etc/shadow

 

 新创建的用户名和密码:ll:123456

sevrer save_5

/home/guests/.log.txt中有一个外网IP:172.105.202.239

 sevrer save_6

 从main文件的修改时间来看,以及.idea中两个看着很像挖矿程序的修改时间完全相同来猜测,lolMinermine_doge.sh是病毒运行后释放的文件

 

 sevrer save_7

 打开mine_doge.sh

很明显,矿池地址:doge.millpools.cc:5567 

sevrer save_8

钱包地址:DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9

3.WS

4.IR

IncidentResponse_1

VMware打开irTest.ova,中间有一些报错,问题不大,继续即可。查看一下root用户最新更新过的记录文件: .bash_history.viminfo

 

.bash_history看了有一些修改操作,但是看了看这些文件内容貌似也没发现挖矿痕迹

.viminfo发现了大量修改redis相关配置

 

 查看redis.conf,这里YOUR_WALLET_ADDRESS就很可疑了

URL地址一查

 那么挖矿程序应该就是redis

└─# echo -n '/etc/redis/redis-server'|md5sum|cut -d '' -f1
6f72038a870f05cbf923633066e48881

 IncidentResponse_2

└─# echo -n 'donate.v2.xmrig.com'|md5sum|cut -d '' -f1
3fca20bb92d0ed67714e68704a0a4503

IncidentResponse_3

 直接查看jar包运行启动后的日志文件nohup.log

 

echo -n 'shirodeserialization'|md5sum|cut -d '' -f1 反序列化漏洞
3ee726cb32f87a15d22fe55fa04c4dcd

 IncidentResponse_4

攻击者都植入挖矿程序了,肯定登陆过服务器,直接last查看登录记录

也可以查看Nginx中的访问日志,tail /var/log/nginx/access.log

 IncidentResponse_5

 就是最后访问时带的 UserAgent

 IncidentResponse_6

 authorized_keys不为空,推测攻击者开启了root的SSH私钥登录

 IncidentResponse_7

/lib/systemd/system/redis.service这个配置很可疑,一直在重启redis,也是在不断维持植入的矿机程序 

SSW

SmallSword_1

直接过滤:tcp contains "$_POST"

6ea280898e404bfabd0ebb702327b18f

过滤语法 "tcp contains "$_POST"" 是用于网络数据包分析和过滤的语法。在该语法中,"tcp" 表示只考虑 TCP 协议的数据包,"contains" 表示只选择包含指定字符串的数据包,而 "$_POST" 是一个字符串模式,用于匹配网络数据包中是否包含该特定的字符串。通过这个过滤语法,可以筛选出包含 $_POST 字符串的 TCP 数据包,进而进行进一步的分析或检查。$_POST 是一个常见的 PHP 变量,用于存储通过 POST 请求方式提交的表单数据。因此使用这个过滤语法可以帮助我们分析和监测包含敏感信息的网络数据包。

需要注意的是,过滤语法的具体用法可能会因网络分析工具的不同而有所差异。上述例子中的过滤语法适用于使用Wireshark等网络数据包分析工具。

SmallSword_2

过滤http,从最后往前看,因为前面大多是扫描流量,没啥关键的。蚁剑的base64传输,直接解码一条一条看即可

tcp.stream eq 142发现写入的内容

 

ad6269b7-3ce2-4ae8-b97f-f259515e7a91

SmallSword_3

 tcp.stream eq 130有一个exe,很大

 选择为原始数据全部复制出来,去掉第一行的HTTP请求包的内容,另存为hexdata.txt

Python简单处理即可

with open('hexdata.txt', 'r') as f:with open('1.exe', 'wb') as f1:lines = f.readlines()for line in lines:line = line.strip()f1.write(bytes.fromhex(line))

 将HTTP响应包的头以及多余数据去掉,保存

 

 是一个Python打包的exe文件,运行得到一个test.jpg

查看文件头,是一个PNG图片,修改后缀为.PNG,打开后CRC校验报错,推测修改了图片高度

 修改高度即可

 flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}

EW

ez_web_1

一开始以为是这个d00r.php,试了发现不对

然后在检索d00r.php时发现了一个名为ViewMore.php的文件

 右键追踪TCP流发现是ViewMore.php写入的d00r.php

所以答案为:ViewMore.php 

ez_web_2

追踪TCP流发现执行了ifconfig,响应内容格式是Gzip,问题不大

 对当前流选择右键,追踪HTTP就可以看到明文了

 

 192.168.101.132

ez_web_3

 还是这个流:tcp.stream eq 100098

这里写入了一个k3y_file

是一个压缩包,直接转化 

from base64 import *base64_data = 'UEsDBBQAAQAAANgDvlTRoSUSMAAAACQAAAAHAAAAa2V5LnR4dGYJZVtgRzdJtOnW1ycl/O/AJ0rmzwNXxqbCRUq2LQid0gO2yXaPBcc9baLIAwnQ71BLAQI/ABQAAQAAANgDvlTRoSUSMAAAACQAAAAHACQAAAAAAAAAIAAAAAAAAABrZXkudHh0CgAgAAAAAAABABgAOg7Zcnlz2AE6DtlyeXPYAfldXhh5c9gBUEsFBgAAAAABAAEAWQAAAFUAAAAAAA=='
with open('k3y_file.zip', 'wb') as f:f.write(b64decode(base64_data))

 有密码,往回找找线索,还是这个流,找到疑似密码:7e03864b0db7e6f9

解压得到答案:7d9ddff2-2d67-4eba-9e48-b91c26c42337

TP

tcpdump_1

当爆破登录失败返回如下:

当请求正确,返回如下:

根据返回特征,直接尝试检索:tcp contains "{\"errCode\":200}"

TMjpxFGQwD:123457

tcpdump_2

383c74db4e32513daaa1eeb1726d7255

(md5('accessToken=f412d3a0378d42439ee016b06ef3330c; zyplayertoken=f412d3a0378d42439ee016b06ef3330cQzw=; userid=1'))

tcpdump_3

直接过滤关键字:tcp contains "jdbc" and tcp contains "username" and tcp contains "password"

Linux curl命令最全详解_Angel_CG的博客-CSDN博客

zyplayer:1234567

tcpdump_4

直接检索jdbc的payload:tcp contains "jdbc:"
EXP应该是这个:custom.dtd.xml

CVE编号直接将利用的包名和关键字贴上搜索引擎找就行

CVE-2022-21724:custom.dtd.xml

tcpdump_5

过滤http,从后往前追踪TCP流即可发现

fscan

HD

hacked_1

登录有AES加密,密钥、iv都已知

接下来只需要找登录成功的用户名和密码

直接AES解密

flag{WelC0m5_TO_H3re}

hacked_2

直接关键字检索:tcp contains "SECRET"

ssti_flask_hsfvaldb

hacked_3

SECRET_KEY,直接解密JWT即可,找到执行命令的包

请求包:

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdx1EKwyAMANCrDEGiPz1Ar1KGZBi7gBpplH2Idy_d-3vTDKWrYiGzm2k5vZRUWeo2WsRObkLKeMKeuekoB4RwZvlg1hDg_S917lSeOhAFf0CTRvXp7ytYGPx2EUbnl7drWqqRk11m3cGmKw0.YpIQcw.J5vs8t8bAr0xDIxF6EqUAH2kkLE"
{'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}

返回包:

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdylsKAyEMQNGtFEGiUGYBs5VpkRQz04AvjNIPce-t_TyXO9QZ8FK7quQfSd1VF6oJI_3S0HzehEQ4p60Xj43MgPXDHrhIjwc4d4X8wiDOwfNPatwoLhrIAvaAkgulxc87Y2SwWyX0xk6r59CUPJ96qvkFHeUvmg.YpIQkg.65xf8l2g9fXAImkfyihId46KkY4"
{'flag': 'red\n', 'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}

答案:red

hacked_4

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJx1jUsOgkAQBa-Cs2lJCEbdcQI9A0w6DdMaYjPgfAwJmbsLC1fq7r2kKrWo6NlZGlhValmiE7yNrkS8y9iSeMQaENvYS-jt-kDXwC8S0PtG0TSVZAxulovCezhcreEZigw-Q2hoDWUVXFhk3GXH0xnyRhULoONnZB-wCzP6QN0Dqt_9b1AXsMb_8F10jm3AjdApT0mlNx2uUsY.YpIRHQ.qS_PWmxt4i4cjHYBzDz-rUdTZns"
{'username': '{{url_for.__globals__[\'__builtins__\'][\'eval\']("app.add_url_rule(\'/Index\', \'Index\', lambda :\'Hello! 123\')",{\'_request_ctx_stack\':url_for.__globals__[\'_request_ctx_stack\'],\'app\':url_for.__globals__[\'current_app\']})}}'}

答案:Index

BF

内存取证-volatility工具的使用 (史上更全教程,更全命令)_路baby的博客-CSDN博客

baby_forensics_1

给了两个文件,一个磁盘镜像,另一个猜测是内存镜像,DiskGenius打开.vmdk

发现是BitLocker加密的磁盘,但是给了内存镜像,直接尝试EFDD提取恢复密钥,先使用ArsenalImageMounter将BitLocker加密磁盘挂载起来

成功获取恢复密钥

560604-255013-655633-128854-663223-316063-484946-476498

打开得到key.txt

最扯的来了,虽然知道后觉得确实有点像rot47,但是还是觉得很脑洞。。。。

the key is 2e80307085fd2b5c49c968c323ee25d5

或者R-studio直接梭哈

baby_forensics_2

直接将calc.exe的内存映射导出来

然后将2844.dmp修改后缀为GIMP可加载的.data格式,使用GIMP打开,然后就是不断地调整位移、宽度。先不断调整位移使之有图像的阴影等,然后宽度适当即可,如下:

或者使用这是 Volatility 3 工具的插件命令windows,用于执行与 Windows 相关的分析。通过运行此命令,您将获取有关内存转储中运行的 Windows 进程、模块、文件和注册表等信息

然后在其中寻找calc.exe和PID,找到这个Windows Handler的句柄名

7598632541

baby_forensics_3

pslist之前一眼便签,肯定有东西 直接寻找.snt结尾的文件,导出

替换便签原来的存储位置,然后打开便签,得到密文

U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==

密钥找了好久,用R-Studio翻,最后在C:/Users/admin/Music下找到个i4ak3y

直接尝试AES解密

这篇关于第二届“陇剑杯”网络安全大赛线上赛write up2023的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352826

相关文章

如何做好网络安全

随着互联网技术的飞速发展,网站已成为企业对外展示、交流和服务的重要窗口。然而,随之而来的网站安全问题也日益凸显,给企业的业务发展和用户数据安全带来了巨大威胁。因此,高度重视网站安全已成为网络安全的首要任务。今天我们就来详细探讨网站安全的重要性、面临的挑战以及有什么应对方案。 一、网站安全的重要性 1. 数据安全与用户隐私 网站是企业存储和传输数据的关键平台,包括用户个人信息、

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y

网络安全运维培训一般多少钱

在当今数字化时代,网络安全已成为企业和个人关注的焦点。而网络安全运维作为保障网络安全的重要环节,其专业人才的需求也日益增长。许多人都对网络安全运维培训感兴趣,那么,网络安全运维培训一般多少钱呢?   一、影响网络安全运维培训价格的因素   1. 培训内容的深度和广度   不同的网络安全运维培训课程涵盖的内容有所不同。一些基础的培训课程可能主要涉及网络安全基础知识、常见安全工具的使用等,价

70-java write类应用场景

在Java中,我们可以使用java.io包中的FileWriter和BufferedWriter类来写入数据到文件。以下是一个简单的例子,展示了如何使用FileWriter和BufferedWriter来写入数据到文件: import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;pub

【网络安全】服务基础第二阶段——第二节:Linux系统管理基础----Linux统计,高阶命令

目录 一、Linux高阶命令 1.1 管道符的基本原理 1.2 重定向 1.2.1 输出重定向 1.2.2 输入重定向 1.2.3 wc命令基本用法 1.3 别名 1.3.1 which命令基本语法 1.3.2 alias命令基本语法 1.4 压缩归档tar 1.4.1 第一种:gzip压缩 1.4.2 第二种:bzip压缩 1.5 tar命令 二、VIM编辑器使用

120张网络安全等保拓扑大全

安全意识培训不是一个ppt通吃,不同的场景应该用不同的培训方式和内容http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484385&idx=1&sn=92f5e7f3ee36bdb513379b833651711d&chksm=c0e47abdf793f3ab7f4621b64d29c04acc03b45c0fc1eb613c37f3

网络安全(sql注入)

这里写目录标题 一. information_schema.tables 和 information_schema.schemata是information_schema数据库中的两张表1. information_schema.schemata2. information_schema.tables 二. 判断注入类型1. 判断数字型还是字符型注入2. 判断注入闭合是""还是'' 三. 判

ACM东北地区程序设计大赛

不得不说随着参赛级别的提高,题目真的是越来越难啊,不过队长真是给力啊,在我们三个共同努力之下拿下了地区赛三等奖,哈哈我们可是大一唯一一只获奖队,终于在这次比赛打败了田大神。。。大神是失手了,俺和他差距还是挺大的。。。队友陈彤马上要去服兵役了,他说这是我们送给他最好的离别礼物,希望那家伙在部队好好干,以后谁干揍我!!!东北地区赛结束后,今年已经估计没机会参加亚洲区比赛了,赶紧补高数和线数啊!!别挂了

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces