DIVA | 输入验证问题
输入验证问题 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,并显示其在线网页内容