吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3142|回复: 7
收起左侧

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

[复制链接]
方块君 发表于 2024-2-26 13:05
本帖最后由 方块君 于 2024-3-2 20:47 编辑

安卓中级题

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

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

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

277913ede68bcc4d8132f9cbe6fc087.png

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

5828fd3fe102e081d72e39757a6c716.jpg

so内也只是检测frida

de6f84229d98ce5f19413db32e3e559.jpg

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

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

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

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

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

e94527829d3f2c89806485b71491444.jpg

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

89e8711eac38b0dddf41be90757e49c.jpg

得到flag生成方法

2e25cdfe14de972718265e7c00f3706.png

下面的注释是解密代码

dex加密分析

68946270452f52c40b80de2cc083231.jpg

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

Web 题

首先是静态 flag 获取

视频

flag3 和 flag1

flag7

视频中的 Github 网址

flag7

flag7

答题网站

flag2

flag2 在答题网站 302 跳转里

flag2

flag2

flag4 & flag10

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

flag4&flag10

flag4&flag10
1f604edae59bff47c1940aec798f970.png

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

flag10

flag10

flag5 & flag9

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

对字符串处理下

. / \ _ 替换即可获取 flag5

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

flag9

flag9

flag6

flag6 有两种解法

方法一

点计算按钮等他计算

flag6_1

flag6_1

方法二

查看源代码

flag6_2

flag6_2

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

flag6_2_2

flag6_2_2

即可获取 flag6

flag8

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

flag11

添加两个滑块

flag11

flag11

滑动到对应值即可获取 flag11

flag11_2

flag11_2

flag12

flag12

flag12

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

flag12_2

flag12_2

获得密码 1213159497

flag12_3

flag12_3

计算出 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

flagA

flagA

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

flagA_2

flagA_2

flagB

flagB

flagB

flagB 的提示是 溢出

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

flagB_2

flagB_2

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

flagB_3

flagB_3

尝试下 int64 溢出

flagB_4

flagB_4

成功获得 flagB

flagC

flagC

flagC

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

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

flagC_2

flagC_2

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

免费评分

参与人数 4威望 +2 吾爱币 +103 热心值 +4 收起 理由
Satifer + 1 我很赞同!
ydxiaoyu + 1 + 1 谢谢
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2024-2-26 13:33
记住了,明年搞成统一,主要没统一也没说明格式这个确实麻烦。

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
fengbolee + 2 + 1 我很赞同!
爱飞的猫 + 1 好诶
方块君 + 1 + 1 我很赞同!

查看全部评分

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
QQ截图20240228111329.png
图2
QQ截图20240228111746.png
991547436 发表于 2024-2-28 11:49
991547436 发表于 2024-2-28 11:22
我按照这个流程为什么解密出了A,但是解密不出B呢,看了半天气得我后面的题都没写
1.把apk中assets中的cla ...

apk中的代码只对A方法进行解密,不对B解密,要解密B需要传入B_offset,吐槽一句,结果和代码无关的解题真的有趣吗

QQ图片20240228114215.png
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
谢谢分享,过来膜拜下,除了要有技术还要有脑洞的!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 06:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表