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()这种方式 ...
随机推荐
- a标签不能继承父级的颜色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 为什么要从 Linux 迁移到 BSD2
OpenZFS on Linux,是项目的 Linux 部分,目前有 345 个活跃的贡献者,有超过 5600 个提交,而且几乎每天都有提交!一些世界上最大的 CDN 和数据存储服务在 FreeBSD ...
- WPF 应用 - 通过 js 缩放 System.Windows.Controls.WebBrowser 的内容
1. 前提 原本是在大屏上展示系统,系统有个功能是加载第三方的网站,第三方网站按照大屏的分辨率写死了宽高: 现需要改到小屏展示系统,而这个第三方的网站不能随着 WebBrowser 窗口的尺寸调整网站 ...
- Codeforces 976C Nested Segments
题面: 传送门 C. Nested Segments Input file: standard input Output file: standard output Time limit: 2 secon ...
- 关于asyncio知识一
一.介绍 asyncio 是python3.4 引入的一个新的并发模块,主要通过使用coroutines 和 futures 来让我们更容易的去实现异步的功能,并且几乎和写同步代码一样的写代码,还没有 ...
- 用 Numba 加速 Python 代码
原文出自微信公众号:Python那些事 一.介绍 pip install numba Numba 是 python 的即时(Just-in-time)编译器,即当你调用 python 函数时,你的全部 ...
- (3)MySQL进阶篇SQL优化(索引)
1.索引问题 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题.本章节将对MySQL中的索引的分类.存储.使用方法做详细的介绍. 2.索引的存储分类 ...
- x86汇编 条件跳转
条件跳转表 汇编语言-条件跳转指令 直接转移指令 指令格式 机器码 测试标志 条件说明 符号 JO OPR 70 OF=1 结果有溢出 JNO OPR 71 OF= ...
- 攻防世界 csaw2013reversing2 CSAW CTF 2014
运行程序 flag显示乱码 IDA打开查看程序逻辑 1 int __cdecl __noreturn main(int argc, const char **argv, const char **en ...
- Linux—用户新建目录和文件的默认权限设置:umask详解
关注微信公众号:CodingTechWork,一起学习进步. 引言 我们有没有思考过一个问题,在登录Linux系统后,我们创建的目录或者文件的权限,为什么每次创建都是统一的?我们做以下实验:新建一 ...