首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >机器学习认证挑战:Nullcon-HackIM CTF 2019 MLAuth-Misc(500)解题实录

机器学习认证挑战:Nullcon-HackIM CTF 2019 MLAuth-Misc(500)解题实录

原创
作者头像
qife122
发布2025-08-06 16:37:05
发布2025-08-06 16:37:05
1520
举报

Tl;dr

关于这个挑战已有大量解题报告,我撰写本文的原因是解题过程异常简洁——由于题目特殊构造方式,仅用四个步骤就完成了破解。:)

挑战描述

从Google Drive链接下载的压缩包中包含两个文件:get_prob.pykeras_model。文件命名暗示这是一个机器学习相关挑战,其中keras_model是预训练模型文件(通过file命令确认其采用分层数据格式)。get_prob.py文件既包含问题描述,也提供了使用给定模型在本地验证特征向量真实性的代码。

问题描述如下:

某组织部署了准确率达99.9%的机器学习认证系统"mlAuth"。每位员工的档案由784个十六进制值组成的字符串表示,系统通过训练这些档案来预测员工真实性概率。仅当预测概率高于0.99时才授予访问权限。目标就是构造能欺骗该系统的伪造档案。

解题过程

作为机器学习新手,我首先搜索了Keras模型可视化方法。使用Python keras库的plot_model函数输出了模型结构图,但随后陷入困境——特征向量要求输入784个十六进制字符(取值范围0x0-0xff)。

通过打印脚本变量,发现程序将十六进制转换为长度785的列表(索引从0开始),经查证这些就是模型的特征参数。最终系统会根据训练模型给出评分,我们需要构造使评分>0.99的十六进制档案才能从服务器获取flag。

四步破解法

灵光一现后,我决定尝试以下组合方案(队友同时编写暴力破解脚本):

  1. 全最小值测试undefinedprofile = hex(0)*784undefined认证概率结果:0.0
  2. 全最大值测试undefinedhex(255)*784undefined认证概率提升至:0.9240912
  3. 半半混合测试undefinedhex(0)*392 + hex(255)*392undefined概率继续上升至:0.95876306
  4. 四等分交替测试undefinedhex(0)*196+hex(255)*196 重复两次undefined最终获得完美概率:0.9999167

胜利成果

将第四步构造的特征向量提交服务器后,成功获取flag:

hackim19{wh0_kn3w_ml_w0ould_61v3_y0u_1337_fl465}

我们团队dark_phoenix最终排名第38位,这次CTF经历让我获益良多。下次挑战再见! :)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tl;dr
  • 挑战描述
  • 解题过程
  • 四步破解法
  • 胜利成果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档