背景资料
案例背景:近日,枫县公安局与工商部门联手,捣毁一涉及上千人的大型网络传销组织,该组织于2015年成立好得快科技有限公司,打着销售保健品的旗号,建立会员管理系统,按照制定的奖金制度发展会员,从事传销和变相传销活动,在案件侦办过程中,执法人员从镜像文件中挖掘到了多条有价值的线索。
比赛面向正式公安民警,检材恕不提供,民警可通过以下链接开通使用
无糖浏览器-您身边的办案助手,下载地址:https://browser-prod.nosugartech.com/start?token=6p0lctqc7ihul67c1em0u7alxy7wm9pk8e2p5muezlkgkwdmjxkms21pw4z0yyoa,下载后注册使用邀请码【AS2I20CT71WC】可快速开通完整权限。
题目
下载镜像文件并提取出历史执行记录第一行的完整命令
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel
仿真history,或介质取证软件查看即可
历史命令文件储存位置/root/.bash_history
从所有已存在的日志中,获取登录失败且次数最多的IP
83.191.103.166
仿真last -f /var/log/btmp,或介质取证软件查看即可
登录失败日志文件储存位置/var/log/btmp
获取宝塔面板操作日志的第一条日志的登录IP
104.28.247.69
仿真,或介质取证软件查看即可
文件储存位置/www/server/panel/data/default.db
bt5 重置密码
bt14 查看默认信息
登录进去直接看安全-面板操作日志
宝塔面板中传销网站绑定的域名是
testing-2th.ns
仿真,或介质取证软件查看即可
文件储存位置/www/server/panel/data/default.db
找到短信发送接口的access_key_id
LTAI4FpdJutfgLTMke5LKa5v
将/www/wwwroot/testing-2th.ns导出使用vscode搜索access_key_id
在tempstatic_cachesshop_config.php
仿真grep -rn '/www/wwwroot/testing-2th.ns' -e 'access_key_id'
要在 Linux 的 /www/wwwroot/testing-2th.ns 目录下搜索文件内容包含 access_key_id 的命令,你可以使用 grep 命令。请在终端中运行以下命令:
grep -rn '/www/wwwroot/testing-2th.ns' -e 'access_key_id'
这个命令的参数解释如下:
-r:递归搜索目录及其子目录。
-n:显示匹配行的行号。
'/www/wwwroot/testing-2th.ns':要搜索的目录路径。
-e 'access_key_id':要搜索的字符串(在这里是 access_key_id)。
这个命令将返回所有包含 access_key_id 的文件列表。
网站源码目录下存在隐藏文本,请写出该文本的正确值
6bb4837eb74329105ee4568dda7dc67ed2ca2ad9
linux文件系统前面加个.,在文件系统中则不可见,可以使用ls -la查看
我这用了finalshell直接看到文件了
看着像base64,解码一下
仿真运行站点,用最高管理权限登陆PC后台,获取微信接口的key值。
96e79218965eb72c92a549dd5a330112
启动mysql
修改本地hosts 添加仿真服务器ip+域名
后缀直接/admin,访问下看看
navicat连接数据库,用户名密码宝塔都有
看下账号密码,看起来是加了盐的值
admin1密码cmd跑出来是123456
最高权限的是admin,重写个密码,把admin1的密码和盐写到admin
登录
找到在线客服APPKEY。
23364375
请通过恢复镜像中被删除的数据,找到被删除的压缩包解压密码,已知嫌疑人在/tmp目录下进行删除的。
【答案格式:M...0...】
ML0VNljo
注:解题过程中推荐使用工具:DiskGenius
DiskGenius恢复文件
对解压后的hdk.sql文件进行分析,所有管理员在国内登录次数最多的IP是?
183.56.233.182
有现成mysql环境了,直接新建数据库,导入sql分析
SELECT ip, COUNT(*) as count
FROM admin_log
GROUP BY ip
ORDER BY count DESC;
通过重明情报分析平台,找到好得快科技有限公司的技术总监的手机号归属地为( )?
【答案格式:巴啦市】
北京市
分析SQL附件,发现该传销平台使用的是哪个公司的第三方客服服务?( )
【答案格式:XXXXXXXX有限公司】
成都美洽网络科技有限公司
可用于向该公司调证的客服id为?
【答案格式:eid=b5a5....l5bala5】
eid=c4f45c3249d9246****69da042df95f9
同上
根据配置表信息我们得知该传销平台还使用了“短信宝”,请找到他的登录密码( )?
【答案格式(填写英文字符)bala....555】
haodekuai123
根据参与传销人员的最后登录IP,发现该平台会员主要分布在哪个地区?
【答案格式:巴啦省】
河北省
SELECT login_ip, COUNT(*) as count
FROM user_log
GROUP BY login_ip
ORDER BY count DESC;
会员李晓晓共亏损多少金额(暂不考虑购买商品的实际货值)?
【答案保留小数点后两位】
14934.78
计算亏损金额,首先明确计算方式,思路是进入平台金额减去流出平台的部分
根据config描述:本商场当前仅开通支付宝充值、微信提现功能。在平台下单时,可选择使用支付宝充值后的用户账户余额进行支付,也可选择使用登录微信号直接购物,无需微信充值。后续如若开通微信充值功能将会在平台进行公告,尽请期待。
进入平台金额:微信购物+支付宝充值
流出平台金额:余额购物扣除+微信提现(实际金额)
筛选李晓晓uid=627的balance_log,按照上述几类统计数据即可,如下图。最下面一行为合计数据
20214.71+11380-5402.43-11257.5=14934.78
成为该平台最高等级会员的门槛费是( )?
【答案格式(填写英文字符)555】
config表
5888
李晓晓通过推荐下级行为所获得的返佣总金额是( )?
【答案保留小数点后两位,遵循四舍五入规则】
24681.52
SELECT SUM(`amount`) as total_amount
FROM `hdk`.`balance_log`
WHERE `uid` = '627' AND `desc` LIKE '%下级%';
该平台不同层级会员直推下级升级为初、中、高获得该次升级订单金额的多少作为直推奖励?
【答案格式(英文字符)x%;x%;x%】
5%;10%;15%
config表
据平台活动,平台高级会员的团队若在“营养品”类商品的销售业绩达到100万元以上,则作为团长的高级会员可获得当月该类商品销售业绩2%的团队奖励。请问,依据该平台2023年10月的销售情况,当月即将发放的团队奖励最高金额是多少?
【答案格式(保留小数点后两位,遵循四舍五入规则):55....5.56】
26556.59
首先提到高级会员则`level_id` = '3'
这里提到一个团队的概念,团队就是团长+团队员,即高级会员+他的直接和间接的下线,需计算他们的销售额
user表每个uid对应的pid为他的上线,可按照此进行递归列出所有下线
然后是销售额的明确,时间是2023年十月整个月即2023-10-01 0:00-2023-11-01 00:00,则order_time >= 1696089600 AND order_time < 1698768000
品类是“营养品”类,则 goods_id IN (4, 5, 6, 7, 8, 9, 10, 11)
销售额应当是实付的金额,则pay_amount
以上为对题目的拆解,涉及到递归,mysql 5.7不支持sql语句进行递归,所以可以选择编写python脚本分析
销售额涉及条件较多,所以我预先将order表进行处理
SELECT *
FROM `order`
WHERE order_time BETWEEN 1696089600 AND 1698768000
AND goods_id IN (4, 5, 6, 7, 8, 9, 10, 11);
导出筛选后的结果至新建表order2(可以直接复制order表的结构)
然后使用如下脚本计算每个团队销售额
pip install pymysql
# -*- coding:utf-8 -*-
import pymysql
# 连接到MySQL数据库
connection = pymysql.connect(host='你的数据库地址',
user='你的数据库地址用户名',
password='你的数据库地址密码',
db='你的数据库')
# 创建一个游标
cursor = connection.cursor()
# 查询所有用户及其上级
cursor.execute("SELECT uid, pid FROM users")
users = cursor.fetchall()
# 构建一个字典,其中键是用户ID,值是包含该用户所有下级的列表
team_members = {}
for user in users:
uid, pid = user
if pid not in team_members:
team_members[pid] = []
team_members[pid].append(uid)
# 定义一个递归函数,用于计算uid的销售额以及其所有下线的销售额
def count_sales(uid):
sales = 0
# 查询uid的订单总额
cursor.execute(f"SELECT SUM(pay_amount) FROM `order2` WHERE uid = '{uid}'")
result = cursor.fetchone()
if result and result[0]:
sales += result[0]
# 计算下线的销售额
if uid in team_members:
for member_uid in team_members[uid]:
sales += count_sales(member_uid)
return sales
# 计算UID团队的销售额并输出
for uid in team_members :
team_sales = count_sales(uid)
print(f"团队 {uid} 的销售额: {team_sales}")
# 关闭游标和数据库连接
cursor.close()
connection.close()
筛选高级团队的销售额*0.02计算即可
写在后面
本次题目主要是服务器取证,没有在服务器的环境埋坑,网站重构还原基本没有难点,考察点依然在数据分析的部分,需要明确分析思路再着手数据分析。以上仅为我个人参赛的一些题目复盘,官方复盘也会在今天同步进行,同时祝各位sir警察节节日快乐。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...