Mobile 移动安全 - Flag Shop 解题思路 一、题目概述 拿到题目附件 `FlagShop.apk` 后,题面给出重要线索:所有 fakeflag 的明文均为 `ISCC{fakeflagfake}`。这说明 APK 内部存储了多个商品的加密数据,但明文是一致的,真正 flag 的明文与 fakeflag 不同,需要从 so 层的加密/校验逻辑入手还原。 核心解题路线: 1. 反编译 APK 提取 DEX,梳理商品列表与 native 调用关系 2. 逆向 `libflagshop.so`,恢复管理员登录凭据 3. 编写 Unicorn 本地仿真脚本,用 fakeflag 样本打通 oracle 4. 将 oracle...
SCM APK Writeup 1. p1/p2/p3/p4 在哪里校验 四段输入最终都会进入 PasswordValidator.validateAndDecrypt(context, p1, p2, p3, p4): PasswordValidator.smali 这一个函数就是总校验入口。它的逻辑可以概括成: 先在 Java/Kotlin 层校验 p1 再在 Java/Kotlin 层结合 p1 校验 p2 调 native 校验 p3 调 native 校验 p4 全部通过后,用 p1+p2+p3+p4 拼成 key 去解密 flag.enc 关键调用点分别在: p1 校验主体...
Mobile + 密码验证 解题思路: 题目给了一个 APK,Java 层会先检查 flag 的基础格式,然后调用 NativeBridge.verifyFlag(AssetManager, String) 进入 JNI 做真正校验。先从 Java 层入手,确认输入必须满足三个条件:总长度为 36,以 ISCC{ 开头,以 } 结尾。这样可以把中间 payload 固定为 30 字节,并继续拆成三段:A = flag[5:13],长度 8;B = flag[13:25],长度 12;C = flag[25:35],长度 10。后续 native 逻辑就是围绕这三段分别做约束。 继续逆向 so,可以提取出 assets 中参与校验的四...
========================= Mobile - 折叠回声 解题思路 这道题叫“折叠回声”,描述里那句“第一声像答案,第二声像线索,第三声才说真话”其实已经把出题人的套路交代得明明白白了——APK里绝对藏着好几层校验或隐藏信息。 所以咱们分析的时候千万别被表面的字符串骗了。第一眼看到的flag大概率就是个“烟雾弹”,真正的flag还得老老实实从资源文件和程序逻辑里去扒。 整个解题流程大概是这样的: APK静态分析 -> 提取DEX字符串 -> 发现第一层假flag -> 检查assets资源文件 -> 发现sleep_loop.webp中的ECH0隐藏块 -> 解密得到EFVM结构 -> 分析VM输出和...
========================= Adriod + 按步取匙 解题思路(必须包含文字说明+截图) APK 包名 com.mobilezkp,核心逻辑在 native 层 libzkpcore.so(ARM64)。整个认证流程分四步: Login — 验证用户名/密码 Challenge 1 — 输入 8 位 hex 验证码 Challenge 2 — 输入 32 位 hex 令牌 Challenge 3 — 输入 16 位 hex 密钥,依赖 intermediate_token 通过全部挑战后,nativeGenerateFlag() 输出最终 flag。 静态分析环境 libzkpcore.so:ARM64 动...
========================= Mobile-深海金库 解题思路 初步分析 解压 APK 后可以定位到两层核心逻辑:Java 层负责输入格式校验与字节预处理,Native 层负责最终验签。关键文件如下: `classes.dex` / `classes2.dex` — Java 层逻辑 `lib/x86_64/libsecure_verify.so` — Native 校验 字符串搜索可见 `com/example/mobile02/MainActivity`、`nativeVerify`、`libsecure_verify.so`,可以确认真正的核心校验位于 Native 层。 Java 层流程 交互坑点:长按...
mobile+ 深潮协定 解题思路: 题目给出一个 Android APK,包名为 `cn.iscc.deepseal`,核心校验流程分为 Java 层和 Native 层两部分。首先在 Java 层分析 `FlagValidator.check()`,可以看到程序先检查输入是否满足 `ISCC{}` 的格式,然后取出花括号内部内容,交给 `CryptoEngine.transform()` 处理,最后再调用 `NativeBridge.verify()` 进行最终校验。因此解题关键就是把这两层变换完整逆向出来。 继续分析 `CryptoEngine.transform()`,发现其参数不是写死在代码里的,而是从...
ISCC2026 WriteUp 题目类型: Mobile + Native SO 混合逆向 题目名称: 灰签名回廊(Mobile2) 解题思路 本题是一道 Android APK 与 Native SO 联合校验的逆向题。flag 被拆分成多个片段分散在 DEX 字节码、native 库和 APK 签名证书中。解题关键在于完整重建从 Java 层到 native 层的五阶段校验链,最后通过 SHA-256 哈希闭壳搜索收尾。 ### 1. APK 解包与整体结构识别 使用 `zipfile` 解压 APK,提取三个关键组件: classes.dex — Java 层校验逻辑,包含多个片段来源类...
WP APK 先用 apktool d 解包,入口在 com.example.mobile01.MainActivity。点击按钮后逻辑在 MainActivity$1.onClick(): input = etFlagInput.getText().toString().trim(); if (!FlagFormatChecker.checkBasicFormat(input)) { wrong; return; } if (FlagDispatcher.dispatchCheck(input)) { success; } else { wrong; } FlagFormatChecker 只检查格式: ISCC{...} 真正校...