DIVA | 不安全数据存储
不安全数据存储 Part1
目标:找出凭证存储的位置/方式以及易受攻击的代码
提示:不安全的数据存储是系统上不安全地存储机密信息的结果,即加密不良、纯文本、访问控制问题等
需要输入第三方用户名和密码
这里输入
Yc
:YCheung
提示已经保存成功
源码
找到InsecureDataStorage1Activity
代码
这里使用的存储方式为Android
的五大数据存储方式之一SharedPreferences
SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了string,set,int,long,float,boolean六种数据类型。最终数据是以xml形式进行存储。在应用中通常做一些简单数据的持久化缓存。
保存路径
/data/data/<package name>/shared_prefs/****.xml
简单了解该存储方式之后,来到对应存储路径之后可以看到存在一个.xml
文件
内容即为刚刚输入的值
不安全数据存储 Part2
源码
第二种不安全数据存储与第一种界面一样,直接看源码
找到Part2的Activity源码,InsecureDataStorage2Activity
这关使用了SQLite数据库存储
SQLite
Android 为了让我们能够更加方便的管理数据库,专门提供了一个SQLiteOpenHelper 帮助类,借助这个类可以非常简单的将数据库进行创建好升级。
SQLiteOpenHelper 中有两个非常重要的实例方法,getReadableDatabase() 和 getWritableDatabase() 。这两个方法可以创建或者打开一个现有的数据库(如果数据库存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入(如磁盘空间已满),getReadableDatabase方法返回的对象将以只读的方式打开数据库,而getWeitableDatabase则出现异常
————————————————
版权声明:本文为CSDN博主「xianKOG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiankog/java/article/details/81702119
其使用方法(增删改查)与其他数据库大同小异
数据库位置
/data/data/<package name>/database/***.db
这一关代码直接执行SQL语句操作数据库,没有使用SQLite存储类提供的方法,并且直接拼接用户可控的变量,存在SQL注入漏洞,但是这一关主题不是SQL注入,所以要找到SQLite数据库存储路径
Android上可以使用RE管理器
软件查看数据库
点击打开可看到数据表
选择表即可看到数据
不安全数据存储 Part3
源码
第三种不安全数据存储采用了创建临时文件方式,存放到应用数据目录
/data/data/<package name>/
按照源码,文件绝对路径应该为
/data/data/<package name>/uinfo****tmp
这次输入admin
:password
,然后来到相应目录下,可以看到存在该文件
打开
不安全数据存储 Part4
源码
这一关采用了文件存储,而文件存储又分手机内部存储与手机外部存储,这一关使用了外部文件存储
手机内部文件存储
特点
- 对于存储文件类型没有要求
- 只要没有超出内部存储空间的大小即可
- 默认情况下,只能被当前应用读取
- 存储路径:
/data/data/<package name>/files/***
- 会随着应用的卸载而被删除
手机外部文件存储
特点
两个路径
- 路径一:
storage/sdcard/Android/data/<package name>/files/***
- 路径二:
storage/sdcard/***
- 路径一:
- 两个路径存储的文件,对文件类型没有要求
- 文件的大小只要不超出SD卡的存储空间即可
- 两个路径下存储的文件不是私有的,其他应用也可以访问
- 路径一:其下存储的文件会随着应用的卸载被删除
- 路径二:其下存储的文件不会随着应用的卸载被删除
必须保证应用有SD卡的读写权限,否则会操作失败
这一关在sdcard
的根目录的.uinfo.txt
文件
输入aaa
:bbb
打开
不安全数据存储4part完结
参考文章: