1.检材 1 的操作系统版本是()
A. CentOS release 6.5 (Final)
B. Ubuntu 16.04.3 LTS
C. Debian GNU/Linux 7.8 (wheezy)
D. CentOS Linux release 7.6.1810 (Core)
A
2.检材 1 中,操作系统的内核版本是()
3.10.0-957.el7.x86_64
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
3.检材 1 中磁盘包含一个 LVM 逻辑卷,该 LVM 开始的逻辑区块地址(LBA)是()
2099200
[root@localhost ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a3996
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
4.检材 1 中网站“www.kkzjc.com”对应的 Web 服务对外开放的端口是()
32000
[root@localhost ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:30000 0.0.0.0:* LISTEN 5806/nginx: master
tcp 0 0 0.0.0.0:31000 0.0.0.0:* LISTEN 5806/nginx: master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6152/master
tcp 0 0 0.0.0.0:7001 0.0.0.0:* LISTEN 5796/sshd
tcp 0 0 0.0.0.0:32000 0.0.0.0:* LISTEN 5806/nginx: master
tcp 0 36 192.168.68.139:7001 192.168.68.1:60805 ESTABLISHED 15541/sshd: root@pt
tcp6 0 0 ::1:25 :::* LISTEN 6152/master
tcp6 0 0 :::7001 :::* LISTEN 5796/sshd
但是没有办法确定是哪个,查看一下history,发现又编辑nginx配置文件
cat /etc/nginx/conf.d/www.kkzjc.com
查看一下配置文件
server {
listen 32000;
server_name www.kkzjc.com;
if ($host != 'www.kkzjc.com'){
return 403;
}
5.检材 1 所在的服务器共绑定了()个对外开放的域名
3
配置文件夹下有三个网站文件夹,因此是三个
6.检材 1 所在的服务器的原始 IP 地址是()
192.168.99.3
history中有docker的记录,或许在docker日志的里面可以看到访问的记录
service docker start
docker ps -a
docker start 08
docker logs 08
7.嫌疑人曾经远程登录过检材 1 所在的服务器,分析并找出其登录使用的 IP 地址是()(并使用该地
址解压检材 2)
192.168.99.222
last命令看一下
8.检材 1 所在的服务器,其主要功能之一为反向代理。找出“www.kkzjc.com”转发的后台网站所使用
的 IP 地址是()
这里是引用
location / {
proxy_pass http://127.0.0.1:8091;
index index.html index.htm;
}
这一段的配置文件显示了本服务经过了8091端口,netstat看一下端口,发现是docker,那我们就需要进入docker看一下
docker中的nginx.conf文件记录了以下信息,包含了该路径下的.conf文件
include /etc/nginx/conf.d/*.conf;
切换到目录下看一下
root@08f64376a2e3:/etc/nginx/conf.d# ls
hl.conf
location / {
proxy_pass http://192.168.1.176:80;
}
9.嫌疑人曾经从题 7 的 IP 地址,通过 WEB 方式远程访问过网站,统计出检材 1 中该 IP 出现的次数为()
18
10.检材 2 的原始磁盘 SHA256 值为()
2D926D5E1CFE27553AE59B6152E038560D64E7837ECCAD30F2FBAD5052FABF37
11.检材 2 所在计算机的 OS 内部版本号是()
18363.1082
12.检材 2 所在计算机最后一次正常关机的时间为()
2020-09-22 13:15:34
13.检材 2 中,VMware 程序的安装时间为()
2020-09-18 17:57:13
14.检材 2 中,Vmware.exe 程序总计启动过()次
8
15.嫌疑人通过 Web 方式,从检材 2 访问检材 1 所在的服务器上的网站时,连接的目标端口是()
8091
16.接 15 题,该端口上运行的进程的程序名称(Program name)为()
docker
17.嫌疑人从检材 2 上访问该网站时,所使用的域名为()
www.sdhj.com
18.检材 2 中,嫌疑人所使用的微信 ID 是()
wxid_06f01lnpavn722
检材二中并没有发现微信记录,但是题目有明确说明了检材二,所以或许存在检材嵌套的情况
找到手机备份,添加为新检材
发现微信记录
19.分析检材 2,嫌疑人为推广其网站,与广告位供应商沟通时使用的通联工具的名称为()
Telegram
20.分析检材 2,嫌疑人使用虚拟货币与供应商进行交易,该虚拟货币的名称是()
DOGE
21.上述交易中,对方的收款地址是()
DPBEgbwap7VW5HbNdGi9TyKJbqTLWYYkvf
22.上述交易中,嫌疑人和供应商的交易时间是()
2020/09/20 12:19:46
23.上述交易中,嫌疑人支付货币的数量为()
4000
24.检材 2 中,嫌疑人使用的虚拟机的虚拟磁盘被加密,其密码为()
zzzxxx
结合微信聊天记录,提示github上有解密方法
在浏览器找到一个很像的浏览记录
百度一下发现果然是
下载按照文档运行,破解虚拟机密码
25.检材 2 中,嫌疑人发送给广告商的邮件中的图片附件的 SHA256 值为()
c50a0e32867ccd06fffc50bc43c7bac8
手机聊天记录提示是邮箱发送
但是并没有邮箱的记录
聊天记录又提示可能保存在了嫌疑人的电脑上,我们先去找一找
在回收站里找到一个可疑文件,这么明显应该八九不离十
26.检材 2 中,嫌疑人给广告商发送广告图片邮件的发送时间是()(忽略邮件状态)
2020-09-20 12:53:00
检材宿主机和手机备份都没有邮件的信息,那么可能在虚拟机里
在虚拟机中移除加密,导出vmdk,添加为新检材,就可以被正常识别了
发现邮件发送记录,也验证了我们上一题的猜想
27.检材 2 中,嫌疑人的邮箱密码是()
honglian7001
28.检材 2 中,嫌疑人使用了()远程管理工具,登录了检材 1 所在的服务器
xshell
29.检材 2 中,嫌疑人使用上述工具连接服务器时,使用的登录密码为()
qwer1234!@#$
30.检材 3 的原始磁盘 SHA256 值为()
31.检材 3 所在的计算机的操作系统版本是()
A. Windows Server 2012
B. Windows Server 2008 R2
C. Windows Server 2008 HPC Edition
D. Windows Server 2019 LTSB
C
32.检材 3 中,部署的网站名称是()
card
33.检材 3 中,部署的网站对应的网站根目录是()
C:\inetpub\wwwroot\v7w
34.检材 3 中,部署的网站绑定的端口是()
80
35.检材 3 中,具备登陆功能的代码页,对应的文件名为()
dllogin.aspx
在检材三的浏览器中发现可疑浏览记录,直接在浏览器里访问一下
爆搜以后发现答案
36.检材 3 中,请对网站代码进行分析,网站登录过程中,代码中对输入的明文密码作了追加()字符串处理
OvO
37.检材 3 中,请对网站代码进行分析,网站登录过程中,代码中调用的动态扩展库文件的完整名称为
App_Web_dllogin.aspx.7d7c2f33.dll
38.检材 3 中,网站登录过程中,后台接收到明文密码后进行加密处理,首先使用的算法是 Encryption 中的()函数
AES
39.检材 3 中,分析该网站连接的数据库地址为()并使用该地址解压检材 4
192.168.1.174
见40题
40.检材 3 中,网站连接数据库使用的密码为()
c4f2737e88
数据库密码记录在DBmanager.dll
中
这是一个解码函数,本地c#环境都有,运行即可
PS C:\Users\25744\Desktop> Add-Type -Path .\DBManager.dll
PS C:\Users\25744\Desktop> [DBManager.Encryption]::AESDecrypt("Mcyj19i/VubvqSM21YPjWnnGzk8G/GG6x9+qwdcOJd9bTEyprEOxs8TD9Ma1Lz1Ct72xlK/g8DDRAQ+X0GtJ8w==", "HL", "forensix");
server=192.168.1.174,1433;uid=sa;pwd=c4f2737e88;database=v7sq3;
41.检材 3 中,网站连接数据库服务器的端口是()
1433
42.检材 4 的原始磁盘 SHA256 值为()
E5E548CCAECD02608A0E053A5C7DCDBFBDD4BE5B0E743EB9DC8E318C369BEBC8
43.重构该网站,分析嫌疑用户的推广链接中参数里包含的 ID 是()
abe6d2ee630379c3
简单分析一下历史命令,发现在进行mssql-server的安装,最后应该是使用docker解决的
除此之外这这台服务器上也没有发现其他的服务
经过初步判断,检材4应该是专门存放数据地址的
因此我们要做的就是启动数据库服务
ifconfig
无法使用,没有安装net-tool,ip addr后结果如图所示
查看网卡配置以后,发现网卡的ip分配策略是dhcp,但是不知道为什么没有给网卡自动分配地址
但是这不重要,因为如果服务器的作用是数据库的话,我们还是要去手动更改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
更改网络配置,servcie network restart
重启网络服务,成功更改网络配置
这里我们也发现了为什么没有分配ip地址,因为onboot的值为no,意味着我们需要手动起网卡
观察history记录,发现docker里面运行了mssql的服务,那么接下来启动docker就能启动网站
启动docker后重启网站,访问后台页面,重构成功
接下来就是最耗脑细胞的一步,网站密码绕过
首先我们要链接数据库,使用之前的数据库信息成功链接
数据库链接之后,就去看管理登录的代码
private void oCmd()
{
try
{
string text = base.Request.Form["tuser"];
string text2 = base.Request.Form["tpwd"];
if (!string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(text2))
{
text2 = Encryption.AESEncrypt(text2, "forensix", "HL");
if (new DSys().IpIsBlock(this.Context.Request.UserHostAddress, 3))
{
this.Context.Response.End();
}
text2 = FormsAuthentication.HashPasswordForStoringInConfigFile(text2, "MD5");
string text3 = this.Context.Request.Url.ToString();
text3 = XSys.FormatWeb(text3);
WDUser wduser = new WDUser();
text = text.Trim();
text2 = text2.Trim();
DataTable dataTable = wduser.DUserLogin(text3, text, text2);
if (dataTable == null)
{
this.JSCODE = XSys.JS_Alert("用户名或密码错误");
}
else if (dataTable.Rows[0]["DU_State"].ToString() == "1")
{
this.JSCODE = XSys.JS_Alert("用户名或密码错误.");
}
else
{
int num = int.Parse(dataTable.Rows[0]["DU_Id"].ToString());
this.Session["DSESSION"] = num;
string userHostAddress = this.Context.Request.UserHostAddress;
QQWry qqwry = new QQWry(this.Context.Server.MapPath("/res/file/qqwry.dat"), userHostAddress);
new WXt().LoginIpInsert(1001, num, userHostAddress, qqwry.Address);
base.Response.Redirect("/d", false);
}
}
}
catch
{
}
}
这段代码是一个oCMD
的私有类
首先,接受tuser
以及tpwd
两个传参,根据前面的题目可以得知,tpwd在传入后进行了一次拼接,例如传入’123456'
,结果就是'123456OvO'
!string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(text2)
是一次非空判断,非空则进入循环
text2 = Encryption.AESEncrypt(text2, "forensix", "HL")
首先进行一次AES加密,Encryption.AESEncrypt
是在DBManager
中的自定义函数,具体功能为实现AES加密,因本地环境可以运行,故不赘述
PS C:\Users\25744\Desktop> [DBManager.Encryption]::AESEncrypt('123OvO', "forensix", "HL");
uAw7CyDoDeesLHY9KBzm7Q==
本地调用,输出AES加密结果
if (new DSys().IpIsBlock(this.Context.Request.UserHostAddress, 3))
{
this.Context.Response.End();
}
本段代码进行ip检查,检查是否在黑名单中,因可以正常访问故不深究
text2 = FormsAuthentication.HashPasswordForStoringInConfigFile(text2, "MD5")
是对text2
变量进行一次MD5加密
加密后结果为b16bf9b7cf6c1c77452ca96a3126a3dc
WDUser wduser = new WDUser();
text = text.Trim();
text2 = text2.Trim();
DataTable dataTable = wduser.DUserLogin(text3, text, text2);
if (dataTable == null)
{
this.JSCODE = XSys.JS_Alert("用户名或密码错误");
}
else if (dataTable.Rows[0]["DU_State"].ToString() == "1")
{
this.JSCODE = XSys.JS_Alert("用户名或密码错误.");
}
首先DataTable dataTable = wduser.DUserLogin(text3, text, text2)
调用了WBus.dll
文件,反编译该文件,追一下wduser.DUserLogin
函数
public DataTable DUserLogin(string **domain**, string **ln**, string **pwd**)
{
DataTable result;
try
{
DBcon dbcon = new DBcon();
SqlParameter[] array = new SqlParameter[]
{
new SqlParameter("@Domain", SqlDbType.VarChar, 50),
new SqlParameter("@Ln", SqlDbType.VarChar, 50),
new SqlParameter("@Pwd", SqlDbType.VarChar, 50)
};
array[0].Value = **domain**;
array[1].Value = **ln**;
array[2].Value = **pwd**;
DataTable dataTable = dbcon.DB_ExecuteProcDT("PD_UserLogin", array);
if (dataTable.Rows.Count == 0)
{
result = null;
}
else
{
result = dataTable;
}
}
catch (Exception ex)
{
DSys dsys = new DSys();
dsys.ErrorInsert(11, MethodBase.GetCurrentMethod().DeclaringType.FullName, MethodBase.GetCurrentMethod().Name, ex.ToString());
result = null;
}
return result;
}
本段函数首先对数据库进行了连接
DataTable dataTable = dbcon.DB_ExecuteProcDT("PD_UserLogin", array);
调用了保存在数据空中的PD_UserLogin
打开数据库,跳转该函数
---用户登录
ALTER PROC PD_UserLogin
@Domain VARCHAR(50),
@Ln VARCHAR(50),
@Pwd VARCHAR(50)
AS
DECLARE @OK INT,@Did INT
SET @OK=8
SET @Did=0
SELECT @OK=DW_Type,@Did=DW_DU_ID FROM TD_Webs WHERE DW_Web=@Domain
IF(@OK=0)
BEGIN
SELECT DU_Id,DU_State FROM TD_User
WHERE DU_Id=@Did AND DU_Ln=@Ln AND DU_Pwd=@Pwd AND DU_ISDel=0
END
IF(@OK=1)
BEGIN
SELECT DU_Id,DU_State FROM TD_User
WHERE DU_Ln=@Ln AND DU_Pwd=@Pwd AND DU_ISDel=0
END
可以先根据用户表来猜测变量的作用
Domain
是域名,Ln
是用户,Pwd
是密码
SELECT @OK=DW_Type,@Did=DW_DU_ID FROM TD_Webs WHERE DW_Web=@Domain
从TD_Webs中选取DW_Web=@Domain
并对@OK
以及@Did
进行赋值
IF(@OK=0)
BEGIN
SELECT DU_Id,DU_State FROM TD_User
WHERE DU_Id=@Did AND DU_Ln=@Ln AND DU_Pwd=@Pwd AND DU_ISDel=0
END
IF(@OK=1)
BEGIN
SELECT DU_Id,DU_State FROM TD_User
WHERE DU_Ln=@Ln AND DU_Pwd=@Pwd AND DU_ISDel=0
END
这是一个登录判断,如果 @OK
的值为 0,表示 DW_Type
为 0,此时通过查询 TD_User
表,根据用户的 DU_Id
、DU_Ln
、DU_Pwd
以及 DU_ISDel
进行验证。如果 @OK
的值为 1,表示 DW_Type
为 1,此时通过查询 TD_User
表,根据用户的 DU_Ln
、DU_Pwd
以及 DU_ISDel
进行验证。
整理一下以上情报,可以得到结论:
-
用户名和密码要与
TD_User
表一致 -
TD_Webs
表中要更改域名 -
TD_Webs
中的DW_DU_Id
要与TD_User
中DU_Id
保持一致
更改数据库,重启服务,使用更改后的账号密码,成功访问
44.重构该网站,该网站后台的代理用户数量为()
26
45.重构该网站,该网站注册用户中共有过()个代理(包含删除的数据)
32
即让我们统计所有曾经注册过的用户数量
开发者工具可以看到调用的dll库
反编译一下
跳转之后找到对应数据表
SELECT count(*) FROM [dbo].[TU_User]
46.重构该网站,对补发记录进行统计,统计 2019 年 10 月 1 日后补发成功的金额总值()
138408.0000
类似的方法,找到补发记录所用数据表
只有当YY1T_CState的值是100的时候,才显示补发成功
sql语句就是SELECT SUM(YY1T_Money) FROM VY_TestLog WHERE YY1T_CState = N'100' AND [YY1T_CDate] BETWEEN N'2019-10-01 00:00:00' AND N'2023-12-21 00:00:00'
47.检材 4 中,对“TX_IpLog”表进行分析,所有在“武汉市”登录的次数为()
2829
SELECT count(*) FROM [dbo].[TX_IpLog] WHERE [XIL_Info] LIKE '%武汉%'
48.重构该网站,该嫌疑人下属代理“liyun10”账户下的余额有()元
1066449
49.接上一题,该用户的推广 ID 是()
d0fdd7a9a010d37e
50.接上一题,该代理商户的最后一次登陆时间是()
2016/9/5 17:09:13