CTF

google-ctf 2016 little-bobby-application writeup

Posted by Jieming Gu on 2016-12-26

本文为2016年google-ctf中little-bobby-application的writeup。

Find the vulnerability, develop an exploit, and when you’re ready, submit your APK to https://bottle-brush-tree.ctfcompetition.com. Can take up to 15 minutes to return the result.

Writeup

首先点我下载题目。直接使用jeb反编译,关键代码如下:

2

应用是一个注册/登陆程序,注册后账户密码存储到数据库,登陆时进行验证。在注册过程中看到与flag相关的内容,程序提示通过注入来获取flag

继续分析应用找到可疑点:

3

4

《Android安全攻防实战》中写到:

确保攻击者不能把来路不明的SQL内容注入到你的查询语句中去,最好的办法就是:避免使用SQLiteDatabase.rawQuery(),而改用一个参数化的语句。

可以确定利用checkLogin()进行SQL注入,编写App,通过给LoginReceiver发送广播来获取flag

flagpassword相同,根据生成过程可知password组成为0-9,a-f。

6

7

题目的要求是获取flag,可以使用SQLite的substr(X,Y[,Z])在查询中对flag进行逐位验证。

例如:username 设置" or substr(flag, 1, 1) = "c"用来验证flag的第一位是否是c;若是,v0不为空,msgIncorrect password,说明结论成立。以此为依据,逐位验证。

5

9

8

完整的代码可以点我下载,也可在我的Repositories中找到。