吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 932|回复: 9
收起左侧

[CTF] 2025-11月Solar应急响应月赛WP!

[复制链接]
solar应急响应 发表于 2026-1-9 16:37
本帖最后由 solar应急响应 于 2026-1-9 17:20 编辑

11月月赛WP

1.emergency

1.提交黑客的IP地址:10.0.100.69 2.提交黑客初始连接的PHP一句话木马密码:shell 3.提交黑客通过初始连接一句话木马后创建新的一句话木马文件的MD5:91a29f36879b024d661851b7765f3969 4.提交黑客创建的不死马的密码:4aad625950d058c24711560e5f8445b9 5.提交黑客上传的恶意文件(远程控制木马)的名称:shell.exe 6.提交黑客上传的恶意文件(远程控制木马)的MD5:0410284ea74b11d26f868ead6aa646e1 7.提交黑客上传的恶意文件(远程控制木马)的端口:4444 8.请提交黑客创建用户账户的用户名:hidden$ 9.请提交黑客创建用户账户的密码:P@ssw0rd123 10.请提交黑客创建用户账户的时间:2025/11/20 16:13:32

提交黑客的IP地址

1.png

获取方式1

Nginx日志中,发现10.0.100.69大批量进行敏感路径扫描。

2.png
3.png

并且访问敏感文件进行交互

获取方式2

从捕获流量中筛选出HTTP数据包,发现请求了shell.php的可疑请求

4.png

提交黑客初始连接的PHP一句话木马密码

获取方式1

根据log日志数据分析,黑客通过cache目录下的configs.cache.php到shell.php,再到bsm.php和.config.php

5.png
一次推断,可能前面几个文件对后面的木马有所关联。

6.png
目录下没有shell.php,但是我们的日志里是访问成功,有可能被删除了。

7.png
不过我们确实在configs.cache.php中找到了一句话木马的内容,其实这也是这个CMS的一个漏洞,也被公开过很久了。

所以这里的flag是flag{shell}

获取方式2

该说不说,这道题给出了流量包其实就非常降低难度了

8.png
同样可以获取

提交黑客通过初始连接一句话木马后创建新的一句话木马文件的MD5

前面看了日志,黑客通过configs.cache.php创建后,访问了shell.php,但是我们没找到啊?

其实也可能是被删除掉了

9.png
Autopsy加载一下磁盘

10.png
找到了一个被删除的php文件

保存下来之后,使用工具或命令获取其内容

11.png
flag{91a29f36879b024d661851b7765f3969}

提交黑客创建的不死马的密码

这个就简单了,根目录下的.config.php应该就是了

12.png
flag{4aad625950d058c24711560e5f8445b9}

提交黑客上传的恶意文件(远程控制木马)的名称

已经提到了是远程控制木马了,按理来说是一个exe程序,我们先看看有没有什么exe程序被创建/上传。

观察流量包发现,这是一个Antsword的流量包,根据特征可以得到文件上传的特征包。

13.png
比如上面这个图片的文件

14.png
上传后的文件名就是bsm.php

内容就是下图中的不死马内容

15.png
我们可以过滤一下:

ip.src == 10.0.100.69 && http.request.method == "POST"

文件上传的话,我们找一下Length比较大的数据包

16.png
第一个1251长度的我们已经看过了,看下下一个

17.png
18.png
那这里就是shell.exe了-> flag{shell.exe}

提交黑客上传的恶意文件(远程控制木马)的MD5

还是上一题的流量包

19.png
20.png
保存下来

21.png
flag{0410284ea74b11d26f868ead6aa646e1}

提交黑客上传的恶意文件(远程控制木马)的端口

火绒剑方案或沙箱方案都是可行的

22.png
flag{4444}

请提交黑客创建用户账户的用户名:hidden$

23.png
24.png
流量包分析得出,用户名为hidden$

flag{hidden$}

请提交黑客创建用户账户的密码:P@ssw0rd123

上一步的结果中也包含了,flag{P@ssw0rd123}

请提交黑客创建用户账户的时间:2025/11/20 16:13:32

25.png
响应时间,转换为UTC+8

from datetime import datetime, timedelta, timezone
input_time_str = "Thu, 20 Nov 2025 08:13:32 GMT"
dt_utc = datetime.strptime(input_time_str, "%a, %d %b %Y %H:%M:%S GMT").replace(tzinfo=timezone.utc)
utc_plus_8 = timezone(timedelta(hours=8))
dt_local = dt_utc.astimezone(utc_plus_8)
formatted_time = dt_local.strftime("%Y/%m/%d %H:%M:%S")
print(f"转换结果: {formatted_time}")

26.png

2.3_idiots wp(11月月赛出题wp)

题目文件结构:

27.png
chm文件,打开.

28.png
一切正常.
29.png

提取之,双击打开,无回显.

30.png
提取index.html,打开.可以发现,这就是chm一打开时候的那个页面的源码.

31.png
32.png
该网页使用异或算法加密了一段数据,解密后eval,判断应为js代码.

34.png
解密得到js代码.

35.png
格式化后可以看出,代码两次滥用com组件执行命令行,调用hh.exe(win自带的chm反编译器)释放test.exe到公共目录,然后执行.断定核心代码应该在test.exe中.

36.png
将test.exe拖入ida.

37.png
38.png
打开注册表中的用户内容,读取其中的pswd字符串变量的值,写入全局变量.似乎在经过一个计算函数和一个检查函数后,会输出成功信息.

39.png
全局函数指针0x4210有三个交叉引用,一个初始化赋值,一个调用,还有一个置0.

40.png
赋值后函数指针的值所对应的函数是一个简单的字符串比对,似乎是正确答案.

41.png
进入疑似计算的函数,2110函数.发现有异或,patch,说明可能不是之前想的那样.

先检查了字符串是否全部为小写16进制字符.然后就是patch赋值.

仔细分析赋值,他备份并赋值了一个QWORD(8 bytes),其中QWORD分成两个DWORD.第一部分等于2313(十六进制为0x909),第二部分的最终结果是0x1ee0,像是一个RVA,被赋值QWORD的rva是0x3218.

又观测到此处将上文的全局函数指针赋值为0,而且这个函数的调用在函数指针的调用之前,所以对于函数指针的调用将会触发异常.

42.png
跟进rva 0x3218,可以发现这里patch的是异常结构体.

43.png
16进制编辑器打开,修改异常数据,重新使用ida加载,发现这个patch的目的是动态添加异常处理函数.跟进动态添加的异常处理函数0x1ee0.

44.png
45.png
转到0x1ee0,发现是另一个函数.同样读取了全局变量密钥,同样会弹出对话框.

46.png
弹出的信息也有所不同,sha256变成了md4.由此可得,当输入密码为16进制小写字符串的时候,将会跳到0x1ee0函数.

47.png
跟进0x11f0,此函数执行了cmd命令,且与之前用来写入exe的路径有关.

48.png
关闭句柄后,调用ExitProcess(0),所以函数到这里结束,不会走另一个验证过程.其实从函数的调用约定__noreturn也能看出.
49.png
打开输入的参数字符串,得知这是经典的ping延时自删除,不过删的是之前hh.exe释放的整个chm的反编译内容的所在目录(包含本exe).

50.png
回到0x1ee0,函数将密码字符串传入了0x1e30,跟进0x1e30.

51.png
先patch,后调用0x1000.这个patch把0x4218的值写回了之前patch的异常结构体地址,应该是恢复之前的异常配置.

52.png
0x1000计算了输入宽字符串的长度.所以前面比对的是输入密码的长度.由此可得密码长度必须为4.

53.png
得到密码长度为4之后,继续往下看.

54.png
跟进0x1d10,再次发现patch.

55.png
这个lpText正是另一个成功信息.程序变更了该字符串的保护,在里面寻找字符L'4',然后加一写回,并恢复保护.

而这里为L'4'的字符只有一个,所以这里是把信息中的'md4'改为了'md5',修改了提交答案的方式.

56.png
跟进0x1b50.

57.png
58.png
跟进0x13b0.能发现sha3的一些常量.由题目名"3_idiots"可推得,"3_idiots"=>"3傻"=>"SHA-3".所以大胆猜测此处调用了sha-3函数.

59.png
返回0x1ee0,可得0x1d10为sha-3哈希函数.这里将输入密码sha-3哈希两次,与常量数组比对.常量数组长度为32bytes,所以使用的是sha3-256.

60.png
若比对通过,则弹出对话框,内容正是之前patch"md4"为"md5"的那个字符串.

所以抠出sha-3两次哈希的结果,使用python爆破4bytes 16进制小写字符串的密码,最后进行md5哈希,然后再取大写16进制,包上"flag{}"后即可提交.

参考脚本如下:

import hashlib
def hashes(input_str):
 first_hash = hashlib.sha3_256(input_str.encode()).digest()
 second_hash = hashlib.sha3_256(first_hash).hexdigest()
 return second_hash
def brute(target_hash):
 hex_chars = '0123456789abcdef'
 for c1 in hex_chars:
  for c2 in hex_chars:
   for c3 in hex_chars:
    for c4 in hex_chars:
     pswd = c1 + c2 + c3 + c4
     if hashes(pswd) == target_hash:
      md5_hash = hashlib.md5(pswd.encode()).hexdigest().upper()
      return (pswd, md5_hash)
target = "9abdbc58792a7e9bff2249854f0a1e2c0bcb28d893e950fbee2f7d3abdfa9dea"
password, md5_result = brute(target)
print(password)#"fade"
print('flag{%s}'%md5_result)#"flag{CC3216B3C60FD8EA5C7A8ABCD3DE6F82}"

flag如下:

flag{CC3216B3C60FD8EA5C7A8ABCD3DE6F82}

3.2700勒索病毒排查

题目描述

某公司财务机器某天突然卡顿,任务管理器发现有程序在高占用,后续所有文件都无法打开,且所有文件都变成了.2700结尾的扩展名,目前通过一些特征判断是勒索病毒,比如勒索信以及文件名等,请您上机排查,并根据题目指引进行溯源和数据恢复。

所需工具在C:\Users\Solar\Desktop\工具\目录中

账号:Solar

密码:Solar521

靶机使用说明:https://mp.weixin.qq.com/s/XFisEU5Gdk245cn8jsnlZQ

题解思路

本次题目环境和上次Live勒索病毒不同(利用WEB漏洞攻击),《全网首发!教科书式学习勒索溯源排查(附开源环境+溯源报告)》,而本次侧重于"人",比如通过钓鱼的方式进行攻击,简单粗暴,所以本次除了勒索排查与数据恢复外,还有对于钓鱼相关的溯源知识

1.提交勒索家族的名称

此勒索家族名称是什么?可访问应急响应.com进行查询,大小写敏感,最终以flag{}提交

在上方的教科书排查勒索的文章中我们提到,确认勒索家族是为了更好的了解此家族,比如此家族TTPs特征、此家族是否在互联网存在恢复工具等,那么有哪些特征可以确认家族呢?

1.加密文件扩展名

2.勒索信内容特征

3.联系邮箱

当然以上为一些判断条件作为特征进行鉴别

在本次环境中我们得到如下信息
61.png
1.扩展名:2700

2.邮箱:sqlback@memeware.net

3.勒索信文件名:info.txt   info.hta

4.以及给到的勒索内容

根据勒索信息我们根据题目描述指引,前往:http://应急响应.com 查询

62.png
根据其特征确定为勒索家族为:Phobos,由于flag大小写敏感,所以flag为:flag{Phobos}

2.勒索病毒预留的ID是什么

勒索病毒预留的ID是什么(预留ID为勒索组织恢复的凭证),以flag{}提交,如有多个以&进行连接

之前的文章我们提到过,勒索预留的id是勒索组织恢复的凭证,一般id存在于:

1.被加密文件名中

2.勒索信中

3.勒索信文件名
63.png

其次为了确认是否存在多个id,比如黑客加密了多次,可能会产生多个id的情况,我们可以借助桌面\工具\everything工具进行搜索

64.png
目前.2700扩展名的文件有9307个(可能有浮动),然后输出.2700 4A30C4F9-3524

65.png
数量一致,所以本次环境的id数量共一个

根据本次环境的被加密文件名和勒索信(info.hta)内容中提到的,且使用everything筛选后,id为:4A30C4F9-3524

所以本题目的flag为:flag{4A30C4F9-3524}

3.提交开始加密的时间

提交开始加密的时间,以flag{2025/1/1 11:11}格式提交

一般情况下加密开始时间点可以用于确认攻击时间点进行溯源,对于加密开始的时间如何确定,我们可以借助everything工具进行辅助

在桌面\工具\everything工具中,以管理员权限打开它

66.png
我们前面排查到被加密文件的扩展名为:2700,所以以此扩展名进行搜索

67.png
然后在Date Modified进行排序

68.png
通过对时间进行排序后得知最早开始加密的时间为:2025/11/19 14:31,所以flag为:flag{2025/11/19 14:31}

4.数据恢复

访问:应急响应.com 找到此家族恢复工具进行恢复,提交C:\Users\Solar\Desktop\Simulation_Desktop_Files\flag.txt文件中的flag

首先此家族的本次所用环境加密器已由:solar应急响应团队 破解,相关文章可参考:【病毒分析】phobos家族2700变种加密器分析报告

本次平台传输文件需要使用nas,相关文档可以参考:青少年CTF平台Windows环境靶机使用说明

访问应急响应.com后,在恢复工具侧找到Phobos恢复工具进行下载

69.png

下载恢复工具的程序的机器打开CMD,执行如下命令登录NAS

sftp -P 2222 手机号@nas.qsnctf.com

70.png
将恢复工具put至nas的home目录中,然后来到环境中,打开任一文件夹,输入如下:

\\nas.qsnctf.com

71.png
72.png
将tools.zip复制到相关到桌面并解压

为了节省时间,可以选择只恢复桌面的文件

73.png
等待一段时间过后看到,相关文件已经恢复完毕

74.png
来到Simulation_Desktop_Files目录查看flag.txt

75.png
最终flag为:flag{6eff1ea09e63423a48288a77d97e0cc6}

5.提交发送邮件的邮箱

提交C:\Users\Solar\Desktop\工具\mail 发送邮件的邮箱,以flag{xxx@xxx.com}格式提交

接下来开始进行溯源阶段,正常情况下溯源,我们需要了解此系统中开放了哪些端口,搭建了哪些业务,比如对外开放了RDP端口,是否搭建了某AO、ERP的服务?

76.png
通过netstat查看到开放了有25邮件端口,SMB共享,3389RDP端口,先看看3389端口的日志,比如爆破?

77.png
如上图所示,左下角输入event,查看事件日志,因为上面溯源的加密开始时间是11月19号 14:31,所以在安全日志中往下滑,找找14:31附近的日志

78.png
但是出乎意料的是这个时间之前的日志没了,一般我们认为,要不就是被删了,要不就覆盖了

79.png
通过属性确定大小,确实是被覆盖了,所以在日常我们做日志备份和设置日志大小的时候一定要做好相关配置,覆盖后对于溯源难度很大

但是我们本次溯源以人为本,这次是财务主机被勒索,比如财务收到钓鱼邮件后导致后续事件的发生,在题目中也给到了提示,相关的邮件在工具\mail目录中

80.png
同样的还是用nas传入文件到本地

81.png
这里我传入到本地后用foxmail打开邮件

82.png
根据题目要求得到了发件人的邮箱为:1983929223@qq.com,所以本题的flag为:flag{1983929223@qq.com}

6.提交发送邮件的IP

提交C:\Users\Solar\Desktop\工具\mail 发送邮件的IP,以flag{x.x.x.x}格式提交

在发送邮件时,一般会记录客户端的IP,当然有些匿名邮箱是不记录的,以foxmail为例,右键邮件后点击查看邮件源码

83.png
然后在头信息中找到X-Originating-IP,这个就是客户端IP

84.png
所以得知此邮件发送IP地址为:39.91.141.213,故flag为:flag{39.91.141.213}

7.提交钓鱼附件中的C2

在钓鱼邮件中有一个名为:发票.zip 的附件

85.png
这可能就是本次钓鱼的C2,通过钓鱼上线后进行加密等,可以将此文件上传至沙箱平台

86.png
提交IP地址:182.9.80.123,所以flag为:flag{**182.9.80.123**}

8.恢复备份数据

部分数据丢失,好在运维之前做了备份,使用C:\Users\Solar\Desktop\工具\diskgenus恢复C:\Users\Solar\Desktop\工具\backup中的备份内:C:\Users\Solar\Desktop\flag.bak文件,提交其flag

本题目仿真了在实际生活中恢复备份的相关知识内容,比如勒索家族将一部分数据删除(而非加密),或者由于个人原因删除了一些数据,硬盘损坏等原因数据丢失,我们就会用到备份恢复相关了

打开桌面\工具\diskgenus后看到如下页面

87.png
此处只需要恢复指定文件而非全盘,所以这里打开虚拟磁盘文件即可

88.png
然后打开backup目录中的备份文件

89.png
90.png
因为只有一个盘,所以会显示1个分区,然后根据提示找到相关的flag.bak文件查看其中flag,也可以直接恢复到系统中

91.png
92.png
所以本题flag为:flag{92047522e5080bad36eda9d29d5a163e}

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
xiaogao66 + 1 谢谢@Thanks!
daxz + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

炫迈 发表于 2026-1-10 08:49
我仔细看完了,确实质量很高,分享点实战经验,应急响应题重点看nginx日志和流量包,黑客IP和木马密码基本都能从HTTP请求里挖出来,不死马分析要结合磁盘取证,像Autopsy这种工具必须熟练,遇到远程控制木马优先用火绒剑监控进程行为,创建隐藏账户这种手法现在很常见,建议平时就开启账户变更告警,3_idiots这道逆向题设计得很妙,chm文件夹带exe是老套路了,但动态patch异常处理函数这种手法现在越来越多,建议学逆向先啃透SEH机制,sha3爆破脚本要提前准备好,勒索病毒排查这块我最有发言权,.2700扩展名确实是Phobos家族的新变种,everything工具按时间排序找最早加密文件是关键,钓鱼邮件溯源一定要看邮件头X-Originating-IP字段,很多新手会漏掉这个,diskgenius恢复备份数据时记得先挂载虚拟磁盘,别直接操作物理盘,最后提醒老哥们,nas传输文件用sftp比smb稳定,端口2222别记错
吓猴蹲 发表于 2026-1-10 11:11
yahcrz 发表于 2026-1-10 12:27
xy838108 发表于 2026-1-10 22:31
支持一下
yum0206 发表于 2026-1-10 23:35

看起来很吓人的样子
521hacker 发表于 2026-1-11 12:43
题目环境是在哪里获取,这么详细不复现一遍多可惜
daymissed 发表于 2026-1-11 12:53
每次跟着大佬学习,就是没有复现环境,建议大佬能把环境一下给下。
 楼主| solar应急响应 发表于 2026-1-12 11:10
521hacker 发表于 2026-1-11 12:43
题目环境是在哪里获取,这么详细不复现一遍多可惜

老师可以去青少年ctf平台,所有的比赛环境赛后都会同步在平台上的
 楼主| solar应急响应 发表于 2026-1-12 11:17
daymissed 发表于 2026-1-11 12:53
每次跟着大佬学习,就是没有复现环境,建议大佬能把环境一下给下。

老师可以去青少年ctf平台,所有的比赛环境赛后都会同步在平台上的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-1-13 10:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表