本WP所有脚本和题目的附件,都可以在公众号回复—2025JS数安,获取
数据安全
1. ds_re_j02
解密,第八行的第二列数据是 flag
打开文件后发现所有内容均为编码后的信息,经过仔细观察,发现这些编码字符仅由 A-Z和 2-7组成,由此推测可能是 Base32 编码,于是尝试使用 Base32 进行解码,果然成功还原出可读内容,其中第二列信息即为 flag。
分析获取水印信息
说实话,一开始我也没搞清楚他这个水印是什么意思,但是先打开文件扫一眼,发现最令人在意的还是插入语句那块的 verification字段,似乎是什么编码。
盲猜一下,可能是 Base 系的,把这些加密的信息放在 PuzzleSolver中看看,但是无论是 32 还是 64 解密出来都是乱码。
这时注意到,无论是什么编码,他这里解码出来的二进制都是以 1 开头的。由于语法前缀或补位的格式要求,大部分文本的二进制都是以 0 开头的,所以在二进制字符串最开头补一个 0,然后复制出来,放在 CyberChef 中进行二进制解码,Base64 解出来的二进制貌似没什么用处,使用 Base32 解出来的二进制,补 0 后可以成功解出水印。
某公司使用国产商用密码加密保护员工考勤数据,因管理员意外离职未交接密码,导致考勤文件无法解密。这直接影响了公司财务部对员工的薪资核算。公司邀请你,专业的数据安全高手,请发挥你的技能特长,运用已知的线索来破解这个难题,解密考勤文件获取 flag。
文件里面给了一张图片,一个密文,结合题目中说的 使用国产商用密码加密,确定这个应该是 SM4 加解密,需要从图片中找出 Key 和 IV。 用 010editor 打开图片查看是否有隐藏信息以及文件,发现啥也没有。用 Binwalk 和 Foremost 提取图片中的隐藏文件或者信息,都没用。最后,想到图片本身或许就是一种编码,于是尝试用随波逐流打开,解出了三个带 ==的字符串,都用 Base64 解码下来发现,只有画红框的那个是有效编码,于是我们就得到了 Key???
比赛的时候,解出来也不知道这一串数字到底是啥,因为根本找不到另一串数字......后面询问了其他师傅,发现解出来的 2001010120231025居然就是 Key,而 IV 则是一个弱口令......需要自己去猜......这里就直接把 IV 放出来了——0123456789abcdef。 有了 Key 和 IV 就能解密了.....
某上市公司 CE0 李总,惊悉公司重要商业机密遭到泄密,这可能给公司带来巨大经济损失和声誉危机。经过初步排查,李总怀疑与自己的心腹小赵有关。据了解,小赵有个特殊癖好,喜欢用一些看似莫名其妙的文件创建时间作为密码,可关键文件目前已被删除。在报警后,警方介入调查后,运用专业的数据恢复工具,成功找回了部分相关文件,其中包含一张奇怪的图片,图片上是一些杂乱无章的几何图形和颜色色块,但文件创建时间却难以确定,仅能推断其肯定早于文件修改时间。此外,调查发现有个客户曾给小赵发送过一个秘密文件,而该文件的密码正是这位客户的名字。现在,摆在你面前的任务是:通过技术手段,找到恢复文件中的 flag,帮助公司。
打开压缩包以后是一个 complex_suspect_disk.001文件,一看就是用于数字取证的被分割过的磁盘映像,可以用 7z 打开,但是保险起见,我们使用 R-Studio 打开。打开后发现用户文件夹下有两个压缩包,从名字就能看出是很重要的文件,于是把这两个压缩包保存下来
保存后发现这两个压缩包里面的文件都受密码保护,再根据题目描述,我们就大胆猜测 .business_secret.zip就是以文件创建时间为密码的文件,而 flag.zip则是以客户名字为密码的文件。 于是我们先去解 .business_secret.zip这个文件里的密码,由于知道是文件创建时间,于是我们直接尝试日期+时间作为密码,密码错误!那单是日期呢?密码还是错误......这时候就陷入僵局了。看似莫名其妙的文件创建时间为密码......日期肯定没错,那或许问题就出现在时间上!于是接下来尝试爆破密码,密码的组成依旧是日期+时间,最后果然能爆破出来,问题就是出现在时间上!
用爆破出来的密码打开文件就能拿到客户的名单了!但是究竟是哪一个客户呢?还有,我该去哪里找这些客户的名字呢?
于是注意力又再次放回磁盘映像中,开始翻找映像中的文件。最后在微信文件夹中找到了客户信息的文件。打开以后是客户名+手机号,于是我们开始根据上面解密出来的文件中客户的手机号开始比对寻找。
最后确定下来是一个名叫 王小天的客户,于是我们尝试用他的名字来打开 flag.zip。果然是!!!!
某公司开发过程中未能严格遵循数据安全规范,导致系统存在严重的安全漏洞。请获取card进行提交。
这是一道 Web 题,比赛的时候忘记截图了,所以这里就不作解释了,改了 GET 参数以后可以直接用 Sqlmap 扫。
数据分析
日志分析
直接写脚本梭哈!
1. 以小时为单位,分析一天工作时间(9:00-17:00)内各小时的访问量分布,找出企业业务高峰时间段。 访问高峰时段定义为:该小时的访问量超过 9:00-17:00 全时段内平均每小时访问量的时间段。
【评测标准】请提交访问高峰时段的小时数(24 小时制),多个小时按从小到大排序,用英文逗号分隔。
工作时间访问量分布:
9:00 - 4956 次 *普通
10:00 - 4537 次 *普通
11:00 - 9134 次 *高峰
12:00 - 6032 次 *普通
13:00 - 5588 次 *普通
14:00 - 9731 次 *高峰
15:00 - 4274 次 *普通
16:00 - 10290 次 *高峰
17:00 - 4216 次 *普通
平均访问量: 6528.7 次/小时
高峰时段: ['11:00', '14:00', '16:00']
2. 统计各个业务系统在一天中的访问量,找出访问量前三的系统。
【评测标准】请提交访问量前三的系统名称,按访问量从大到小,使用英文逗号连接,转换为小写 MD5 提交。
系统访问量排名:
1. rd 17915 次
2. supply 16651 次
3. crm 11330 次
4. finance 9418 次
5. auth 5794 次
6. hr 4086 次
7. external 3812 次
8. legal 3780 次
9. logs 3626 次
10. monitoring 2802 次
访问量前3名: rd, supply, crm
3. 检测高频访问行为,识别可能的恶意 IP。 高频访问行为定义为:同一 IP 在任意一个自然分钟内(即每连续 60 秒且起始时间为整点或整分,如 08:05:00-08:05:59)对同一个接口的请求次数超过 30 次。
【评测标准】请提交检测到的异常 IP 数量。若检测到 3 个异常 IP,则答案为:3。
可疑IP总数: 25
172.16.10.127
172.16.10.235
172.16.10.29
172.16.11.138
172.16.12.190
172.16.12.75
172.16.13.130
172.16.14.108
172.16.17.166
172.16.2.12
172.16.2.97
172.16.21.231
172.16.22.34
172.16.23.120
172.16.23.95
172.16.27.107
172.16.27.198
172.16.3.153
172.16.30.230
172.16.5.225
172.16.6.11
172.16.6.117
172.16.6.138
172.16.9.165
172.16.9.229
4. 为了保障数据安全,公司内部仅允许正常用户的浏览器 User-Agent 和开发使用的 postman、curl、requests 等工具对 API 进行访问。 请检查 User-Agent,找到使用其他工具访问 API 的 IP 地址。
【评测标准】请提交使用恶意 User-Agent 的 IP 数量。若检测到 23 个使用恶意 User-Agent 的 IP,则答案为:23。
User-Agent分析结果:
合法请求: 78524 条
可疑请求: 690 条
可疑IP数: 63 个
流量分析
1. 分析提供的流量文件,找到哪些研究成果只上传了成果文档,但是没有上传哈希文件。
【评测标准】将找到的研究成果编号按数字部分从小到大排序,用 “-” 连接,最后转为 32 位小写 md5 提交(UTF-8 编码,行尾无换行符)。
题目提到“上传文件”,附件中有 .pcap文件,可以考虑分析文件传输相关的协议。ftp-data协议常用于 FTP 数据传输,可能包含文件内容,因此可以优先过滤 ftp-data协议,发现确实有很多 .sha文件以及 .pdf文件。
于是我们把这些文件导出,人工查找未上传哈希文件的成果文档。
最后找出来是这些文件:
RES115756-RES157171-RES266128-RES317032-RES326054-RES364261-RES509894-RES554600-RES618293-RES636474-RES750741-RES794870-RES884672
2. 科研成果在提交到平台之前都会进行审核并记录哈希,现在检查发现有些成果上传的和提交审查的文件存在区别。请使用提供的 aes256 密钥解密文件,并校验哈希,找到哪些科研成果存在区别。
【评测标准】同第 1 题格式:将编号按数字部分升序排序,用 “-” 连接,最终输出 32 位小写 md5。
这道题的做法其实挺多的,既可以自己写脚本,也可以用 CyberChef 这类工具,区别主要在于工作量的多少。 有一点需要特别说明:AES 解密需要 Key、IV 以及加密文件。
Key都在 keys文件夹里,打开任意一个 key 文件就能发现,它是经过 Base64 编码的,所以在解密之前,必须先进行 Base64 解码。IV则需要我们自己去猜。在 CTF 中,IV 常常是 16 位的 0,可以先拿这个作为初始尝试。 加密文件自然就是从流量包中导出的那个 pdf 文件。 按照这个思路,再对照着 excel 文件里的内容,果然成功解密了。 接下来就是手动保存为 pdf 文件,然后计算哈希,并与 excel 文件里的哈希值做校对了。 当然脚本也是可以的。 但是!!!这道题我解出来的哈希全挂,网络上也没有找到 wp,结合前几道题里面主办方打出的骚操作,答案就是全部的哈希都不对也不是没有可能......要是哪位大佬跑通了或者有别的骚思路,欢迎留言 or 私信,跪谢!!!!!!
3. 近期在平台上发现了一些 .eml后缀的垃圾邮件。检查流量,找到登录并上传这些 .eml垃圾邮件的用户名数量。
【评测标准】直接提交数字,例如发现 24 个用户则输出 24
直接放在 CTF-NetA 里面梭哈。
他这里面会自动帮你分析出发送每个文件的用户名,手动统计然后去重即可得到 7个。
这题是个 AI 数据投毒的 Web 题,我比赛时把模型的错误率顶到了 50%。题目要的就是你花式拉低准确率,按错误率给分,所以思路就两条:要么在数据里下毒,要么改模型参数。
可惜我之前没咋玩投毒,数据那条路直接两眼一抹黑。好在平时还有在折腾深度学习,干脆就专心在模型参数上动刀子。这里就来简单说一下:
激活函数:把 ReLU 换成 tanh 或 sigmoid 这类容易饱和的,梯度一路趋零,参数更新直接躺平。 Dropout:设成 0.9+,训练时神经元几乎被砍光,模型啥也记不住;或者干脆设 0,让网络狂背过拟合,一测就崩。 学习率:调到 1e-1 甚至 1,步子太大直接越过最优解;或调到 1e-6,步子小到训练完也挪不动坑。 模型层数:疯狂堆到几十上百层,梯度不是爆炸就是消失,反向传不动,网络越学越懵。 神经元个数:每层只给 1-2 个神经元,容量小到连训练集都背不下来;或暴力拉到十万级,参数量爆炸,同样训不动。 另外提一嘴,咱们公众号平时就爱撸各种深度学习练手项目,像梯度爆炸、梯度消失这些坑也都踩过写成干货,感兴趣的师傅们戳主页翻翻,说不定刚好就有你需要的内容~
仅供学习参考使用,
请勿用作违法用途,否则后果自负。