输入验证问题 Part1

目标:尝试在不知道任何用户名的情况下访问所有用户的数据。默认情况下有三个用户,您的任务是通过一次恶意搜索输出所有三个用户的数据。

提示:当输入在使用前未被过滤或验证时,会出现不正确或无输入验证问题。当开发从外部获取输入的组件时,请始终验证它。为了便于测试,数据库中已经存在三个用户,例如其中一个是admin,您可以尝试搜索admin来测试输出。

测试

根据提示输入admin测试输出

可以看到有一个提示,打印了用户名和密码以及信用卡号码

当输入一个不存在的用户名

根据提示为数据库查询,继续测试是否存在注入,猜测以单引号闭合

admin'-- 

横杠后面有一个空格,在SQL语句中相当于注释符,经测试#注释无效

成功查询,说明存在SQL注入,直接' or 1=1--

admin' or 1=1 -- 
admin' or 1=1 /*
/* 同样可以注释

把所有用户的信息都查询出来了

源码

MainActivity找到这一关的Activity为SQLInjectionActivity

分析源码

未对用户输入进行任何校验或者过滤,而导致SQL注入。


输入验证问题 Part2

目标:尝试访问除Web URL之外的任何敏感信息。

提示:当输入在使用前未被过滤或验证时,会出现不正确或无输入验证问题。当开发从外部获取输入的组件时,请始终验证它。

测试

根据目标提示,除Web URL之外的链接,我当时只想到file协议加载本地文件,于是就用之前不安全数据存储那几个文件试试

第一个文件路径:

/data/data/jakhar.aseem.diva/shared_prefs/jakhar.aseem.diva_preferences.xml

第二个文件路径:

/data/data/jakhar.aseem.diva/uinfo-1058045833tmp

以上两个都是手机内部存储,属于应用内部数据,接下来试试手机外部存储

/storage/emulated/0/.uinfo.txt

如果想要读取手机外部存储的数据需要赋予该应用读取SD卡内容的权限

加载Web URL看看

源码

InputValidation2URISchemeActivity

WebView

WebView是Android一个view控件,它可以加载URL,并显示其在线网页内容


标签: Android安全, DIVA

添加新评论