Happy Android Security
  • 前言
  • CTF
    • 2014 NAGA&PIOWIND APP应用攻防竞赛 Crackme01
    • 2014 NAGA&PIOWIND APP应用攻防竞赛 Crackme02
    • 2014 NAGA&PIOWIND APP应用攻防竞赛 Crackme03
    • 2014 NAGA&PIOWIND APP应用攻防竞赛 Crackme04
    • 2015 0CTF Vezel 100
    • 2015 0CTF Simple 150
    • 2015 XCTF&RCTF Flag System 100
    • 2015 XCTF&RCTF Where 300
    • 2015 海峡两岸CTF 一个APK逆向试试吧
    • 2016 LCTF EASY 100
    • 2016 AliCTF Timer 50
    • 2016 AliCTF Loop And Loop 100
    • 2016 ZCTF Android1 200
    • 2016 LCTF EASY EASY 200
    • 2017 ISCC 全国大学生信息安全与对抗技术竞赛 简单到不行
    • 2017 SSCTF 加密勒索软件 100
    • 2017 SSCTF Login 200
    • 2017 XCTF&NJCTF Easy Crack 100
    • 2017 XCTF&NJCTF Safe Box 100
    • 2017 XCTF&NJCTF Little Rotator Game 200
    • 2017 陕西省网络安全大赛 拯救鲁班七号 100
    • 2017 陕西省网络安全大赛 The Marauders Map 150
    • 2017 陕西省网络安全大赛 人民的名义 抓捕赵德汉1 200
    • 2017 陕西省网络安全大赛 人民的名义 抓捕赵德汉2 200
    • 2017 陕西省网络安全大赛 取证密码 200
  • 应用侧安全
    • 任意私有组件启动漏洞的利用
    • [ByteDance] [TikTok] NotificationBroadcastReceiver导出存在任意私有组件启动结合FileProvider机制与FbSoLoader框架导致本地代码执行漏洞
    • [ByteDance] [TikTok] DetailActivity导出存在任意私有组件启动结合FileProvider机制与FbSoLoader框架导致本地代码执行漏洞
    • [ByteDance] [TikTok] WallPaperDataProvider导出存在任意私有文件读取漏洞
    • [Adobe] [Acrobat Reader] AdobeReader处理DeepLink时未正确进行合法性校验导致下载PDF文件过程出现路径穿越可造成远程代码执行
    • [CVE-2019-16253] [Samsung] [SMT] SamsungTTSService导出存在任意私有组件调用提权漏洞
    • [CVE-2021-25390] [Samsung] [Photo Table] PermissionsRequestActivity存在任意私有组件启动漏洞可获取ContentProvider数据
    • [CVE-2021-25391] [Samsung] [Secure Folder] KnoxSettingCheckLockTypeActivity泄露Intent可获取ContentProvider数据
    • [CVE-2021-25397] [Samsung] [TelephonyUI] PhotoringReceiver导出存在任意文件写漏洞结合动态库加载行为可实现本地任意代码执行
    • [CVE-2021-25410] [Samsung] [CallBGProvider] CallBGProvider的调用权限定义为Normal可实现任意私有文件读取
    • [CVE-2021-25413] [Samsung] [Contacts] SetProfilePhotoActivity导出存在任意私有组件启动漏洞可获取ContentProvider数据
    • [CVE-2021-25414] [Samsung] [Contacts] SetProfilePhotoActivity导出存在任意私有文件读写漏洞
    • [CVE-2021-25440] [Samsung] [FactoryCameraFB] CameraTestActivity导出存在文件读写权限泄露漏洞
    • [CVE-2022-22292] [Samsung] [Telecom] 动态注册BroadcastReceiver默认导出存在任意私有组件启动漏洞
  • 系统侧安全
    • REDMI 5 Plus Second Space Password Bypass
    • 【蓝牙】CVE-2017-13258 CVE-2017-13260 CVE-2017-13261 CVE-2017-13262信息泄露
    • 【蓝牙】CVE-2018-9357 BNEP_Write越界写导致RCE
    • 【蓝牙】CVE-2018-9358 信息泄露
    • 【蓝牙】CVE-2018-9359 process_l2cap_cmd_L2CAP_CMD_INFO_REQ未判断缓冲区边界造成信息泄露
    • 【蓝牙】CVE-2018-9360 process_l2cap_cmd_L2CAP_CMD_CONN_REQ未判断缓冲区边界造成信息泄露
    • 【蓝牙】CVE-2018-9361 process_l2cap_cmd_L2CAP_CMD_DISC_REQ未判断缓冲区边界造成信息泄露
    • 【蓝牙】CVE-2018-9365 smp_sm_event数组越界访问导致RCE
    • 【蓝牙】CVE-2018-9381 gatts_process_read_by_type_req未初始化栈变量导致信息泄露
    • 【NFC】CVE-2018-9584 nfc_ncif_set_config_status未检测长度越界读写
    • 【NFC】CVE-2018-9585_nfc_ncif_proc_get_routing未检测长度越界读写
    • 【蓝牙】CVE-2019-2209 未检测PIN码长度导致越界读造成信息泄露
    • 【NFC】CVE-2019-9358 ce_t3t_data_cback越界读写
  • 内核驱动侧安全
Powered by GitBook
On this page
  1. CTF

2017 XCTF&NJCTF Little Rotator Game 200

Previous2017 XCTF&NJCTF Safe Box 100Next2017 陕西省网络安全大赛 拯救鲁班七号 100

Last updated 2 years ago

2017XCTF南京站线上赛同时也是NJCTF的Mobile题,一度做的我怀疑人生,题目可以在XCTF OJ上面找到

  • http://oj.xctf.org.cn/practice/defensetrain/5584ce8300114ceabd14f1fdea1669cd/

这是一个纯native的APP,拿到手后看到没有Java层的Activity,当时就把我吓蒙了,上一次看到没有Activity的APP还是Android 4.x的时候,当时允许无Activity跑应用,于是就有好多病毒利用这点搞啊搞......

题目要继续做啊,临时到谷歌爸爸那里学习

  • https://developer.android.com/reference/android/app/NativeActivity.html

给的是一个根据手机重力传感器的三个值然后显示相应颜色的APP,看的头都晕了

看不下去了,于是决定先看so,IDA打开so

200分的题目至于上O-LLVM混淆嘛

至于如何搞O-LLVM,以后专门整理一篇文章分享一下个人经验

总结出流程

首先通过传感器获取(x, y, z)三个值,之后传入a_process()

当然,a_process()函数也是使用O-LLVM混淆了

调用a_process()后会有一个判断

如果a_process()的返回值不是6,直接和数组对比

如果返回值为6,则调用b_process(),并将两个返回值相加再跟数组对比

b_process()函数同样使用了O-LLVM混淆

对比的数组

.rodata:0000785C dword_785C      DCD 2, 7, 5, 3, 2, 9, 4, 1, 3, 6

一共十个数字,也就是说要对比十次

那么我们可以通过动态调试伪造输入,当对比的数据为7和9时,将a_process()的返回值设为6,并将b的返回值设为1和3

使用IDA动态调试,先计算出两个调用点的地址然后下断点

>>> hex(0x38A6 + 0x7389F000)
'0x738a28a6'
>>> hex(0x3BE2 + 0x7389F000)
'0x738a2be2'

断点下好后,一直F9,当R0的值保持为2不变,即可进行十次对比

数组第二个数字是7,所以需要将R0修改为6

此时会在b_process()断下,将返回值修改为1,如果已经为1则不需要修改

按照这种方法对比完数组的十个数据,在Android Device Monitor输出flag

动态调试的过程并不是很难,唯一需要注意的是,注意手机要立着:)

flag:njctf{PvrNa7iv3Al1}