2024铁人三项决赛CTF RE - crazyaes 解题笔记
2024铁人三项决赛CTF RE - crazyaes 解题笔记题目信息题目名称crazyaes平台名称玄机靶场xj.edisec.net题目类型REVERSE逆向难度极难赛事2024年第一届长城杯信息安全铁人三项赛线下决赛初步分析拿到题目附件后首先用file命令确认文件类型$ file crazyaes.exe crazyaes.exe: PE32 executable (console) x86-64, for MS Windows是一个64位 Windows PE 可执行文件。先用strings提取可打印字符串发现了几个关键信息UPX0、UPX1节名 → 文件被 UPX 加壳checkdata→ 存在名为 checkdata 的数据段/2flag:→ flag 输出标记wrong!→ 错误提示字符串确认是 UPX 壳之后尝试用upx -d脱壳但发现 UPX 头部被修改过标准脱壳工具报错。于是转而直接用 PE 解析工具分析节信息发现程序包含自定义的checkdata节里面存放的是加密后的密文数据。逆向分析用 IDA Pro 加载脱壳后的二进制定位到主逻辑函数。程序的核心流程如下读取用户输入即 flag对输入进行加密处理将加密结果与checkdata段中的密文进行比较匹配则输出 flag不匹配则输出wrong!重点分析加密函数发现整体结构是 AES但有两处关键改动改动一SubBytes 替换盒被修改标准 AES 的 S-Box 是固定的 256 字节查找表但程序中的 S-Box 与标准值不同是自定义的替换盒。这意味着直接用标准 AES 解密无法还原明文。改动二MixColumns 系数被修改标准 AES 的 MixColumns 操作使用固定的矩阵{2,3,1,1}等系数程序中的矩阵系数同样被替换成了自定义值。这种对 AES 内部结构进行局部修改的手法在 CTF 逆向题中比较常见通常称为魔改 AES。解题思路由于加密算法是魔改 AES直接调用标准库无法解密需要根据逆向分析的结果还原自定义的解密流程提取程序中实际使用的 S-Box正向和逆向提取修改后的 MixColumns 矩阵提取密钥扩展逻辑Key Schedule按照 AES 解密流程依次执行 AddRoundKey → InvShiftRows → InvSubBytes用自定义逆 S-Box→ InvMixColumns用自定义逆矩阵对checkdata中的密文执行上述解密得到明文实现解密脚本后对密文数据进行解密输出结果即为 flag。Flagflag{Re_1ts_f0n}总结本题的核心考点是对魔改 AES 的识别与逆向还原能力。解题关键有两点一是要能快速识别出 AES 的整体结构即使 S-Box 和 MixColumns 被修改AES 的轮结构AddRoundKey、SubBytes、ShiftRows、MixColumns依然保留二是要耐心提取程序中实际使用的自定义参数逐一替换标准 AES 中的对应部分构造出正确的解密流程。对于此类魔改密码学算法的题目建议优先关注以下几点查找表是否被替换、运算系数是否被修改、轮数是否有变化、密钥扩展是否有改动。逐一排查后通常能较快定位到改动点。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2521714.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!