日常破解--XCTF easy_apk
一、题目来源
来源:XCTF社区安卓题目easy_apk
二、破解思路
1、首先运行一下给的apk,发现就一个输入框和一个按钮,随便点击一下,发现弹出Toast验证失败。如下图所示:

2、将该APK直接拖进AndroidKiller中反编译,搜索关键字验证失败,如下图所示:

3、关键代码就在MainCtivity.java处,使用jeb直接查看Java代码(偷懒不看smali汇编了,看到脑壳痛),发现代码逻辑为将用户输入的字符串使用Base64New类中的Base64Encode()函数加密后和一个字符串相比较,若相等,则验证通过,否则验证失败,点击跳转到Base64New类中,发现Base64Encode()函数首先将用户输入得到的字符串转为字节数组作为参数,然后每3个字节为一组,扩展为4个字节,最后查表即可(感觉很眼熟的样子,emmmm就是base64编码,只是对照表跟base64对照表不同,可惜我在写完解密脚本之后才发现是这东西),那么解密过程也很简单了,直接对字符串4个字节一组分组,缩减为3个字节一组(语文水平感觉很差的样子写道这里。。。。),然后转为字符拼接成字符串即可。


4、将解码过程写出python脚本跑出flag,填入验证通过!!!


三、总结
总结:很基础的一道题,唯一的难点就在必须写base64解码脚本了吧,emmmm要是像我一样木有认出来是base64,那一开始就有点难受了!!!下面附上Base64编码解码原理以及相关脚本!!!
Base64编码原理:
1、将字符串转为字节数组,然后每3个字节一组,一个24个比特,不足3个字节直接补0
2、在每一组3个字节24bit中,以6个bit构成一个字节(高两位补0),形成4个字节为一组
3、根据编码后的字节查找对照表,拼接成字符串,自此,Base64编码完成!!!
Base64解码原理:
1、将编码后的字符串查找对照表后的字节以4个字节为一组,出现=直接去掉即可
2、将这4个字节每个字节的高两位去掉,有32bit变为24bit,将这24bit以8个bit构成三个字节
3、将第二步得到的字节数组转为字符串即可!!!
附上python脚本(ps:由于markdown问题,所以有需要的主机更改一下某些地方的缩进):
def Base64Decode(str_list):
list_base = []
a = str_list[0] << 2
c = str_list[1] & 15
b = str_list[1] >> 4
a = a | b
list_base.append(a)
c = c << 4
a = str_list[2] & 3
b = str_list[2] >> 2
c = c | b
list_base.append(c)
a = a << 6
a = a | str_list[3]
list_base.append(a)
return list_base
CodingTable = 'vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89+/'
Ciphertext = '5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs='
i = 0
flag = 'flag{'
while i <= (len(Ciphertext) - 1):
list1 = []
n = 0
for k in range(4):
if Ciphertext[i + k] == '=':
list1.append(0)
n = n + 1
else:
list1.append(CodingTable.index(Ciphertext[i + k]))
ba = Base64Decode(list1)
for j in range(3 - n):
ch = chr(ba[j])
flag = flag + str(ch)
i = i + 4
flag = flag + '}'
print(flag)
日常破解--XCTF easy_apk的更多相关文章
- 日常破解---XCTF_APP1获取flag记录
日常破解---XCTF_APP1获取flag记录 一.题目来源 来源:XCTF社区安卓题目app1 二.解题记录 1.首先安装到模拟器中运行一下,如下图所示,点击一下按钮,弹出提示年轻人不 ...
- 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库
一.题目来源 题目来源:XCTF app3题目 二.解题过程 1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示: 2.什么是.ab文件?.ab后缀名的文件是Andr ...
- 开发神器之phpstorm破解与日常使用
PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查. PhpStorm可随时帮助用 ...
- 【CentOS】Linux日常管理
/////////////////////////目录///////////////////////////////////////// 一.日常监控指标相关 1.监控系统状态命令 2.查看系统进程 ...
- 如何破解Excel文档的编辑密码
对于Excel文档我们不仅可以设置打开密码,还可以设置几天几种密码,比如编辑密码.编辑密码又称写保护密码,是一种可以限制编辑权限的密码.如果我们在日常工作中发现自己忘记了excel编辑密码的话,那就需 ...
- 【.net程序破解】实战之标志位破解绕过注册法
今天有时间玩了下一个不错的软件Advanced System Cleaner,可惜要注册 于是想办法给破解了,这是跟之前不同的地方,属于.NET破解教程: 软件地址 - http://www.crsk ...
- Windows server 2008 R2远程桌面终端连接数的破解
Windows server 2008 R2远程桌面终端连接数的破解 日常工作中,经常需要远程连接到服务器上,然而在公司里,老总.同事都需要连接到服务器上,而默认的服务器系统同时连接的最大连接数只有2 ...
- 怎样破解邮箱password
破解邮箱password怎样破解邮箱password邮箱在我们的生活中日益成为一个不可或缺的角色.公司与公司之间的商贸往来,学生与老师间的学习交流,以及占非常大部分的私人信件的往来等等非常难离开它.但 ...
- 破解密码那些事儿(Hacking Secret Ciphers with Python)
作者:Al Sweigart 我们在电视和电影里头经常能够看到黑客们兴奋的快速敲击键盘,接着毫无意义的数字就在屏幕上飞奔(比如黑客帝国).然后让大家产生了一种奇妙的错觉,做黑客是一件高大上的事情, ...
随机推荐
- Div水平垂直居中的三种方法
百度了很多种方法,很多是不起作用的.下面这些方法是我亲自试过的.希望对大家有帮助! 下面是一波代码水军. <!DOCTYPE html> <html lang="en&qu ...
- webpack4的迁移
引用于https://www.jianshu.com/p/7ae252f27f09 感觉是突然之间,webpack4的消息就满天飞了,听说打包速度提高了很多,还有最大的噱头是实现了零配置,leader ...
- linux查看并发连接数
1.查看TCP的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat ...
- android流式布局、待办事项应用、贝塞尔曲线、MVP+Rxjava+Retrofit、艺术图片应用等源码
Android精选源码 android模仿淘宝首页效果源码 一款艺术图片应用,采用T-MVVM打造 Android MVP + RxJava + Retrofit项目 android流式布局实现热门标 ...
- 工厂方法FactoryMethod 初步学习笔记
一,意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 二,别名 虚构造器 Virtual Constructor 三,适用性 当一个类不知道它 ...
- ROC曲线、KS曲线
一.ROC曲线 ROC曲线由混淆矩阵为基础数据生成. 纵坐标:真阳性比率TPR,预测为正占真正为正的比例. 横坐标:假阳性比率FPR,预测为正占真正为负的比例. 除了roc曲线的纵横坐标外,还有一个准 ...
- mysql 多字段更新
更新一个字段当好写 ; Query OK, rows affected (17.36 sec) Rows matched: Changed: Warnings: 问题是想更新多个字段sql serve ...
- docker E: Unable to locate package nginx
在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时 ...
- python常用包
今日所得 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块 collections模块 namedtuple:具名元组 #定义方式一: ...
- Excel中带字母的数字序列自增实现方法
示例: 在A1单元格输入以下公式,然后向下填充公式 =".mr"&ROW()&" {margin-right: "&ROW()& ...