方块君 发表于 2024-2-26 13:05

【2024春节】解题领红包 Web题全flag, 安卓中级题

本帖最后由 方块君 于 2024-3-2 20:47 编辑

# 安卓中级题

由于安卓中级题忘记存具体的分析过程了,说解密流程吧

图片有点模糊是因为被qq压缩了,找不到原图了

~~下次能不能在题目页面写一下flag格式(害我没拿到首杀~~



jeb pro打开加密dex提示签名不正确 ~~不知道是故意的还是忘记更新签名了~~



so内也只是检测frida



先把dex修复然后用xposed拦截为修复的dex

以及拦截File的delete函数,防止删除解密出来的dex

注:根据反编译源码,源加密dex要改名为 decode.dex 放在app数据目录,不然还是失败(我解密时候是这样操作的)。

~~afterHook 是我想尝试解密其他函数用的,后面还是直接扣代码来解密dex了~~

然后在app的数据目录能看到多出个fix2.dex的文件



居然不在 A.d 根据提示找到 B.d 并把解密代码扣出来使用资源中的密钥进行解密



得到flag生成方法



下面的注释是解密代码

dex加密分析



对比差异发现这个dex加密就是更改了方法的地址

# Web 题

## 首先是静态 flag 获取

### 视频

flag3 和 flag1

### flag7

视频中的 Github 网址



## 答题网站

### flag2

flag2 在答题网站 302 跳转里



### flag4 & flag10

右键网站查看源码发现背景图有 flag 信息




拿到了 flag4,flag10 可能藏在图片里了
拿 Stegsolve 试试,直接拿到 flag10



### flag5 & flag9

网页源码中有一段 flag5 flag9 的文本

对字符串处理下

把 `.` `/` `\` `_` 替换即可获取 flag5

把 `.` 替换成换行,在手动处理下即可获取 flag9



### flag6

flag6 有两种解法

#### 方法一

点计算按钮等他计算



#### 方法二

查看源代码



获得一段 md5
拿去网站解密下



即可获取 flag6

### flag8

玩游戏玩到 1w 金币即可获取

### flag11

添加两个滑块



滑动到对应值即可获取 flag11



### flag12



查看源码发现是用的 `WebAssembly`,把 `wasm` 文件下载下来用 `Jeb pro` 看看



获得密码 `1213159497`



计算出 flag12

至此,所有静态 flag 都已获取

- flag1{52pj2024}
- flag2{xHOpRP}
- flag3{GRsgk2}
- flag4{YvJZNS}
- flag5{P3prqF}
- flag6{20240217}
- flag7{Djl9NQ}
- flag8{OaOjIK}
- flag9{KHTALK}
- flag10{6BxMkW}
- flag11{HPQfVF}
- flag12{HOXI}

### 动态 flag

### flagA



查看解密网站登录包返回的 cookie 里有 flagA
带进查看 uid 的接口即可获取 flagA



### flagB



flagB 的提示是 `溢出`

查看网页端代码后发现能实现溢出的只有购买数量部分



~~购买数量可能有限制~~ (更正:购买后的余额不能大于现有余额)



尝试下 int64 溢出



成功获得 flagB

### flagC



看题目是要把物品放到对应位置即可获取 flagC

已知 3 个物品,红绿灯、车、高铁



使用摄像头功能,用 obs 虚拟摄像头 + word 慢慢调即可获取 flagC

Hmily 发表于 2024-2-26 13:33

{:1_906:}记住了,明年搞成统一,主要没统一也没说明格式这个确实麻烦。

991547436 发表于 2024-2-28 11:22

本帖最后由 991547436 于 2024-2-28 11:27 编辑

我按照这个流程为什么解密出了A,但是解密不出B呢,看了半天气得我后面的题都没写
1.把apk中assets中的classes.dex放到/data/data/com.zj.wuaipojie2024_2/app_data中,改名decode.dex
2.用mt管理器修复apk中assets中的classes.dex
3.修改apk中assets中的classes.dex中的类C,删除方法getStaticMethod中的2行:fix.delete() 和 newFile(dir,fix.getName()).delete(); 见图1 ,保存打包安装apk
4.运行app,随意输入密码,会生成/data/data/com.zj.wuaipojie2024_2/app_data/2.dex
5.反编译2.dex可以看到类A已经解密,类B未解密,见图2
图1

图2

991547436 发表于 2024-2-28 11:49

991547436 发表于 2024-2-28 11:22
我按照这个流程为什么解密出了A,但是解密不出B呢,看了半天气得我后面的题都没写
1.把apk中assets中的cla ...
apk中的代码只对A方法进行解密,不对B解密,要解密B需要传入B_offset,吐槽一句,结果和代码无关的解题真的有趣吗

Ishisashi 发表于 2024-2-28 12:56

991547436 发表于 2024-2-28 11:49
apk中的代码只对A方法进行解密,不对B解密,要解密B需要传入B_offset,吐槽一句,结果和代码无关的解题真 ...

不能说无关,因为 B_offset 本来就是代码的未使用变量。

方块君 发表于 2024-3-2 20:40

991547436 发表于 2024-2-28 11:49
apk中的代码只对A方法进行解密,不对B解密,要解密B需要传入B_offset,吐槽一句,结果和代码无关的解题真 ...
是的,文章中我也有提到解密B.d需要使用到资源内的密码(偏移信息)

feiyao32 发表于 2024-3-4 17:41

谢谢分享,过来膜拜下,除了要有技术还要有脑洞的!
页: [1]
查看完整版本: 【2024春节】解题领红包 Web题全flag, 安卓中级题