drozer源码学习二:info+scanner
Information:
datetime: 输出android中当前日期;time. setToNow()
deviceinfo: 输出设备信息
deviceinfo做了三件事:
1. cat /proc/version;输出linux内核版本和gcc编译版本号
2. cat /system/build.prop;输出android的全局属性:虚拟机参数、版本号、处理器、分辨率等等,很重要
3. 执行getprop;输出系统中prop文本的键值对(参考1)
permissions: 输出package中拥有的权限及保护等级
指定permission:setting.mpermissions.get(permission)返回PermissionInfo,其protectionLevel指定permission保护等级;其
descriptionRes是对permission的描述字符串的ID,利用
context. getResources.getString(ID)取得描述符。
Scanner:
activity.browsable: 列出package中能被浏览器调用的activity
根据packagInfo(不用再多说怎么得到吧,看app模块)得到manifest,再扫描出application便签下包含Category = android.intent.category.BROWSABLE的activity并列出其uri
misc:
native: 包含native文件的package,分application和system
在application. publicSourceDir目录下找寻so文件,此功能与app.package.native模块一致(代码相同)
得到application.sharedLibraryFiles,列出包含的native目录(为什么看到的都是jar包?)
readablefiles: 列出目录下可读文件,利用busybox工具中的find指令:
find %s \( -type b -o -type c -o -type f -o -type s \) -perm-o=r \-exec ls {} \;
secretcodes: 列出secretcodes中的android:host,如下图:
实现原理:通过packageName创建applicationContext来获取到apk的xml文本,遍历xml查找data属性为android_secret_code的记录。
关于什么是secretcode,请看链接:Android Secret Code
sflagbinaries: 查找具有suid/sguid的二进制
find %s -type f \( -perm -04000 -o -perm -02000 \) \-exec ls {}\;
那查找这个suid/sgid有什么用的,SUID,SGID,StickyBit详解。Suid/sgid在运行时以root来操作,android中用于手机root。
writablefiles: 列出目录下可写的文件
find %s \( -type b -o -type c -o -type f -o -type s \) -perm-o=w \-exec ls {} \;
provider:
finduris: 列出能被我们访问的provider uri
1.首先根据getpackages得到provideruri;2、构造contentResolver去尝试查询uri即可得到能被我们访问的uri。与app.provider.finduri不同之处在于,后者只得到provider的uri而没有去尝试访问,故不能分辨provider可否被injection。
injection: 可被SQL injection的provider;实质是contentResolver.query
sqltables: 列出provider中可被访问的表,并输出列名
在上面finduri的基础上,再去query “* from sqlite_master—“
traversal:
遍历provider找出有Vulnerable;实质contentResolver.read
参考:
版权声明:本文为博主原创文章,未经博主允许不得转载。
drozer源码学习二:info+scanner的更多相关文章
- Dubbo源码学习(二)
@Adaptive注解 在上一篇ExtensionLoader的博客中记录了,有两种扩展点,一种是普通的扩展实现,另一种就是自适应的扩展点,即@Adaptive注解的实现类. @Documented ...
- python 协程库gevent学习--gevent源码学习(二)
在进行gevent源码学习一分析之后,我还对两个比较核心的问题抱有疑问: 1. gevent.Greenlet.join()以及他的list版本joinall()的原理和使用. 2. 关于在使用mon ...
- Vue源码学习二 ———— Vue原型对象包装
Vue原型对象的包装 在Vue官网直接通过 script 标签导入的 Vue包是 umd模块的形式.在使用前都通过 new Vue({}).记录一下 Vue构造函数的包装. 在 src/core/in ...
- 以太坊 layer2: optimism 源码学习(二) 提现原理
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 博客:http://www.cnblogs.com/ ...
- [spring源码学习]二、IOC源码——配置文件读取
一.环境准备 对于学习源码来讲,拿到一大堆的代码,脑袋里肯定是嗡嗡的,所以从代码实例进行跟踪调试未尝不是一种好的办法,此处,我们准备了一个小例子: package com.zjl; public cl ...
- drozer源码学习:app
源码下载:https://github.com/mwrlabs/drozer:模块的源码位于src.drozer.modules,根据模块名来划分文件夹: app.auxiliary.exploit. ...
- SocketServer源码学习(二)
SocketServer 中非常重要的两个基类就是:BaseServer 和 BaseRequestHandler在SocketServer 中也提供了对TCP以及UDP的高级封装,这次我们主要通过分 ...
- Thrift源码学习二——Server层
Thrift 提供了如图五种模式:TSimpleServer.TNonblockingServer.THsHaServer.TThreadPoolServer.TThreadSelectorServe ...
- mybatis源码学习(二)--mybatis+spring源码学习
这篇笔记主要来就,mybatis是如何利用spring的扩展点来实现和spring的整合 1.mybatis和spring整合之后,我们就不需要使用sqlSession.selectOne()这种方式 ...
随机推荐
- docker apollo配置中心分布式部署
Apollo 简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服 ...
- C#类中的字段、属性和方法
C#类中的字段.属性和方法 刚开始学C#,对于类中的字段.属性和方法很难分清,写下这份笔记,帮助理解 字段:与类相关的变量 声明方法与声明变量类似,可在前面添加访问修饰符.static关键字等: 属性 ...
- Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析
之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析,通过对LoadModel函数的解析,能够很好理解. ...
- Flink实时计算topN热榜
TopN的常见应用场景,最热商品购买量,最高人气作者的阅读量等等. 1. 用到的知识点 Flink创建kafka数据源: 基于 EventTime 处理,如何指定 Watermark: Flink中的 ...
- android分析之mutex
Android的锁是对Linux锁的一种包装: // ------------------------------------------------------------------------- ...
- 使用HTML、jquery、DOM创建文本
<html> <head> <meta charset="utf-8"> <meta charset="utf-8"& ...
- java IO流文件拷贝文件(字节流标准写法)
public static void copyFile(String srcPath, String destPath) { FileInputStream fis = null; FileOutpu ...
- 在 .NET Core 中构建 REST API
翻译自 Camilo Reyes 2020年8月26日的文章 <Build a REST API in .NET Core> [1] REST API 可以使用简单的动词(如 POST.P ...
- PTA 统计二叉树叶子结点个数
6-2 统计二叉树叶子结点个数 (10 分) 本题要求实现一个函数,可统计二叉树的叶子结点个数. 函数接口定义: int LeafCount ( BiTree T); T是二叉树树根指针,函数Le ...
- 创建Maven父子项目以及它们的优点
此文引用:https://blog.csdn.net/zxl8876/article/details/104180133 创建maven父子项目 第一步创建父项目: 新建一个普通的maven项目 删除 ...