当前位置: 首页 > news >正文

【CTF Reverse】XCTF GFSJ1092 easyEZbaby_app Writeup(Android+逆向工程+Java)

easyEZbaby_app

究极简单的安卓逆向


解法

得到一个 apk 安装包。

用 jadx 打开,搜索文本 flag,加载所有。

flag 是 obj + obj2,来自用户的用户名和密码。

    @Override // android.view.View.OnClickListenerpublic void onClick(View view) {String obj = this.username.getText().toString();String obj2 = this.password.getText().toString();if (checkUsername(obj) && checkPass(obj2)) {Toast.makeText(this, "登录成功", 0).show();Toast.makeText(this, "flag{" + obj + obj2 + "}", 0).show();return;}Toast.makeText(this, "登录失败", 0).show();}

先分析 checkUsername 方法。str 和 sb 相等时返回 true。

    public boolean checkUsername(String str) {if (str != null) {try {if (str.length() != 0 && str != null) {MessageDigest messageDigest = MessageDigest.getInstance("MD5");messageDigest.reset();messageDigest.update("zhishixuebao".getBytes());String hexString = toHexString(messageDigest.digest(), "");StringBuilder sb = new StringBuilder();for (int i = 0; i < hexString.length(); i += 2) {sb.append(hexString.charAt(i));}return (sb.toString()).equals(str);}return false;} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}return false;}

将 CheckUsername 方法改为输出 sb。

import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class CheckUsername {public static void main(String[] args) {try {MessageDigest messageDigest = MessageDigest.getInstance("MD5");messageDigest.reset();messageDigest.update("zhishixuebao".getBytes());String hexString = toHexString(messageDigest.digest(), "");StringBuilder sb = new StringBuilder();for (int i = 0; i < hexString.length(); i += 2) {sb.append(hexString.charAt(i));}System.out.print(sb);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}private static String toHexString(byte[] bArr, String str) {StringBuilder sb = new StringBuilder();for (byte b : bArr) {String hexString = Integer.toHexString(b & 255);if (hexString.length() == 1) {sb.append('0');}sb.append(hexString);sb.append(str);}return sb.toString();}}

输出:

7afc4fcefc616ebd

然后分析 checkPass 方法。str 不为空,长度15,

    public boolean checkPass(String str) {if (str == null) {return false;}char[] charArray = str.toCharArray();if (charArray.length != 15) {return false;}for (int i = 0; i < charArray.length; i++) {charArray[i] = (char) ((((255 - i) + 2) - 98) - charArray[i]);if (charArray[i] != '0' || i >= 15) {return false;}}return true;}

经过这句处理后,charArray[i] 变为 ‘0’。

charArray[i] = (char) ((((255 - i) + 2) - 98) - charArray[i]);

将 CheckPass 方法改为输出 str。

import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class CheckPass {public static void main(String[] args) {char[] charArray = new char[15];for (int i = 0; i < charArray.length; i++) {charArray[i] = (char) ((((255 - i) + 2) - 98) - '0');}System.out.print(charArray);}
}

输出:

onmlkjihgfedcba

拼接 obj + obj2 得到 flag。

Toast.makeText(this, "flag{" + obj + obj2 + "}", 0).show();

Flag

flag{7afc4fcefc616ebdonmlkjihgfedcba}

声明

本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规

博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任

http://www.lryc.cn/news/440025.html

相关文章:

  • ubuntu 22.04 ~24.04 如何修改登录背景
  • Andrej Karpathy谈AI未来:自动驾驶、Transformer与人机融合
  • Vue使用query传参Boolean类型,刷新之后转换为String问题
  • 开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界(一)
  • 国学盛典 致敬先贤 《老子与道德经》纪录片研讨会在北京善品堂国学馆圆满落幕
  • sqlgun新闻管理系统
  • react hooks--useState
  • C/C++:优选算法(持续更新~~)
  • 【qt信号槽-6】槽函数不执行的一种原因——未知线程
  • Leetcode面试经典150题-162.寻找峰值
  • Vue组件:模板引用ref属性的使用
  • robomimic基础教程(一)——基本概念
  • 7天速成前端 ------学习日志 (继苍穹外卖之后)
  • 讲课研判:基于教师上课视频文件的综合分析
  • mac 如何开启指定端口供外部访问?
  • Weblogic部署
  • 面向对象设计的五大原则(SOLID 原则)
  • Python和MATLAB及C++信噪比导图(算法模型)
  • App及web反编译方案
  • 学成在线练习(HTML+CSS)
  • istio中使用serviceentry结合egressgateway实现多版本路由
  • Java项目——苍穹外卖(二)
  • 【Python日志功能】三.日志记录方法与多模块日志
  • 在pycharm终端中运行pip命令安装模块时,出现了“你要如何打开这个文件”弹出窗口,是什么状况?
  • Axure多人协调的方式
  • 【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程
  • React学习笔记(1.0)
  • Axure RP实战:打造高效图形旋转验证码
  • 101012分页属性
  • 从0-1 用AI做一个赚钱的小红书账号(不是广告不是广告)