DIVA系列教程 part 4 – 输入验证问题

DIVA第7,8关涉及到输入验证问题

7. INPUT VALIDATION ISSUES – PART 1

  • 目标:在不知道任何用户名情况下尝试访问所有用户数据。默认有三个用户,任务就是用一条恶意搜索语句找出所有三条数据
  • 提示:在用户输入在使用前没有被过滤或验证时,会出现不合规的或不存在的输入验证问题。开发组件时外部输入需要验证。方便测试起见,三个用户已经存在于数据库,其中一个是admin,你可以尝试搜素admin查看输出

根据提示,其中一个用户是admin,搜索返回admin用户信息

根据目标任务,需要输入一条搜索语句输出所有三个用户,猜测应该是sql注入类问题。

直接上万能密码:

a’ or ‘1’=’1

返回的正好就是三个用户的信息

当不确定是否存在sql注入时,可以配合logcat使用

输入英文单引号 ‘ ,在log中找到错误提示

可以初步判断是存在sql注入的

SELECT * FROM sqliuser WHERE user = ”

然后构造万能语句就ok了。

在源码 SQLInjectionActivity.class 中找到数据库定义

根据源码可以清楚的看到查询操作存在sql注入漏洞

8. INPUT VALIDATION ISSUES – PART 2

输入协议和地址,系统会打开浏览器访问该网站

有一点很重要,就是协议名称 http 或 https 是自己输入的,所以考虑也可以输入其他协议

在之前的案例中,在/mnt/sdcard/目录下存在 .uinfo.txt文件。我们使用 file:// 对其进行访问

可以访问到外部存储的数据,然后根据之前案例中不安全存储part 1 中存储在 .xml中的敏感信息

用file协议访问

也是ok的。

源码 InputValidation2URISchemeActivity.class 中看到此功能定义

程序接收用户输入并使用 loadUrl进行解析,但并没有进行验证,导致了可以使用file协议对文件系统进行访问

另外一点,可以访问到外部存储 sdcard的内容是因为在 AndroidManifest.xml中存在外部存储可读权限定义

您可能还喜欢...