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()这种方式 ...
随机推荐
- Java数组:多维数组(二维),Arrays类,冒泡排序
Arrays类数组工具类:java.util.ArraysArrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用 具有 ...
- 使用代码生成工具快速开发ABP框架项目
在一般系统开发中,我们一般要借助于高度定制化的代码生成工具,用于统一代码风,节省开发时间,提高开发效率.不同的项目,它的项目不同分层的基类定义不同,我们需要在框架基类的基础上扩展我们的业务类代码,尽量 ...
- vue 弹窗禁止底层滚动
原因:底层视图高度超出百分百,加入弹窗后再苹果浏览器隐藏上下栏的情况下遮罩层没有完全遮住底层. 处理:打开弹窗后禁止底层滚动调用stop事件,关闭则开启底层滚动调用move事件. let mo=fun ...
- Python装饰器(2)
上一篇介绍了装饰器的常规使用方法,即函数形式的装饰器.这篇文章中,进一步介绍类class跟装饰器的相关知识. [用装饰器来装饰类函数] 这是今天介绍的第一种使用场景,比较常见.因为目前好多的编程语言都 ...
- java 递归求二叉树深度
给定二叉树,找到它的最大深度. 最大深度是从根节点到最远叶节点的最长路径上的节点数. 注意:叶子是没有子节点的节点. Example: Given binary tree [3,9,20,null,n ...
- Django中间件(中间件版登陆验证、访问频率限制)
一.介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. ...
- 5行代码!完成bat病毒制作!!!
这个病毒的功能是删除当前目录下.cpp类型的代码. copy %0 "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\P ...
- Ubuntu18.04安装MySQL(未设置密码或忘记密码)
一 安装MySQL sudo apt-get update sudo apt-get install mysql-server 二 密码问题 1 安装时提示设置密码 这种情况没什么问题,通过已下命令登 ...
- Hi3559AV100 NNIE开发(7) Ruyistudio 输出mobileface_func.wk与板载运行mobileface_chip.wk输出中间层数据对比
前面随笔讲了关于NNIE的整个开发流程,并给出了Hi3559AV100 NNIE开发(5)mobilefacenet.wk仿真成功量化及与CNN_convert_bin_and_print_featu ...
- Linux标准输入、重定向与参数传递
Linux标准输入.重定向与参数传递 按惯例,每当运行一个新程序时,所有shell都为其打开3个文件描述符,即标准输入.标准输出以及标准错误.如果不做特殊处理,例如就像简单的命令ls,则这三个描述符都 ...