Android安全(四)–数据库 之 SQLite数据库

  • A+
所属分类:逆向工程

每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。

SQLite数据库是D.Richard HippC语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有如下特征:

1轻量级

SQLiteCS模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也相当小。

2、独立性

SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要安装,所以在使用的时候能够省去不少麻烦。

3、隔离性

SQLite数据库中的所有信息(比如表、视图、触发器)都包含在一个文件内,方便管理和维护。

4、跨平台

SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如AndroidWindows MobileSymbianPalm等。

5、多语言接口

SQLite数据库支持很多语言编程接口,比如CC++JavaPythondotNetRubyPerl等,得到更多开发者的喜爱。

6、安全性

SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。

导出查看数据库文件

android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data/package_name/databases文件夹中。

我们的app里面用到sqlite数据库的时候, 会生成一个db文件,保存在我们手机中。有的时候,在调试数据库,很想看一下里面的表结构是否正确,这个时候就十分苦恼,因为这个db文件不能够直接拿出来,我们知道,在DDMS里面有一个FileExplorer,它里面保存着手机中的各个文件夹,但是尝试打开里面的文件夹的时候,却发现怎么点都没有东西,是真的没有吗?其实是我们没有获取到访问这个文件夹的权限。下面我们就开始一步一步的拿到真机调试中的db文件。

注意:确保你的手机是root过的。

一、打开adb.exe

 sdk目录下,找到platform-toolsadb.exe就在这个文件夹下,尝试双击打开,发现cmd一闪而过,然后就没了,打不开?这里提供一个打开adb.exe的方法,在文件夹空白区域,按住键盘shift,同时点击鼠标右键,在弹窗中选择在此处打开命令窗口,会弹出如下cmd窗口(也可以直接打开cmd,然后进入相应的路径):

Android安全(四)--数据库 之 SQLite数据库


二、打开DDMSAndroid Device Monitor

打开DDMS后,选择FileExplorer,然后我们可以看到其下的各个文件夹,我们要找的.db文件就保存在data文件夹下

Android安全(四)--数据库 之 SQLite数据库


如果FileExplorer下没有东西的话,可以尝试选择左边的手机型号。此时我们点击data,会发现data是无法打开的,然后我们进行下一步,通过cmd执行命令为我们获取相应的权限。

 

三、获取权限

在获取权限的时候,需要一步一步的获取文件夹权限。

1、获取data文件夹权限

 在第一步打开的cmd中, 输入命令 adb shell su -c "chmod 777 /data" , 回车。

 这时data文件夹的权限就获取到了,打开data可以看到其下的文件夹,

Android安全(四)--数据库 之 SQLite数据库


2、获取dada/dada文件夹权限

 与第一步类似,继续输入命令  adb shell su -c "chmod 777 /data/data",回车。

 这样就获取到了dada/dada文件夹权限,打开dada/dada,里面保存了个个应用包名文件夹,找到我们需要找的app包名,然后再进一步打开,

3、获取应用db文件

 继续输入命令  adb shell su -c "chmod 777 /data/data/包名",回车。这时,就打开了这个app的文件夹,db文件,保存在databases里面。

 继续输入命令  adb shell su -c "chmod 777 /data/data/包名/databases",回车。这时,databases可以打开了,我们可以看到保存在其中的db文件。

 继续输入命令  adb shell su -c "chmod 777 /data/data/包名/databases/*",回车。这时,databases下的db文件都被设为可读状态

Android安全(四)--数据库 之 SQLite数据库


4、导出db文件

 选择需要导出的文件,然后点击右上角的导出按钮,选择保存地址即可

四、查看数据库结构

db文件已经拿到,那么查看数据库可以使用数据库工具,将db文件导入即可。我这边使用的是Navicat Premium

 

Android安全(四)--数据库 之 SQLite数据库


一如既往的学习,一如既往的整理,一如即往的分享。感谢支持Android安全(四)--数据库 之 SQLite数据库

Android安全(四)--数据库 之 SQLite数据库


Android安全(四)--数据库 之 SQLite数据库

HW攻防演练总结:安全数据分析

水坑攻击的原理和预防措施

利用系统溢出漏洞提权

浅谈APP漏洞挖掘之逻辑漏洞

蜜罐调研与内网安全

2020HW热门0day分析与复现

红队技能:Hash读取与端口转发

民航业网络安全工作思考

2020hw系列文章整理(中秋快乐、国庆快乐、双节快乐)

HW中如何检测和阻止DNS隧道




扫描关注LemonSec

Android安全(四)--数据库 之 SQLite数据库


Android安全(四)--数据库 之 SQLite数据库


本文始发于微信公众号(LemonSec):Android安全(四)--数据库 之 SQLite数据库

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: