【Android 逆向】【攻防世界】RememberOther

android,逆向,攻防,世界,rememberother · 浏览次数 : 38

小编点评

**apk 安装提示:** 输入用户名注册码,但由于代码中没有提供用户输入的提示,因此用户可能会一直输入空字符串或其他字符,导致安装失败。 ** jadx 文件校验:** 代码首先检查用户名和注册码的长度是否为 0,如果为 0,则认为用户名或注册码为空或无效。代码还检查注册码长度是否为 16,如果不符合规范,则认为注册码无效。最后,代码使用 MD5 算法对用户名的字节数组进行加密,并将加密后的字节数组转换为字符串,并与注册码比较大小,如果相等,则认为用户名正确。 **小 bug:** 代码中对 MD5 解密后的字符串长度进行判断,如果长度不为 16,则认为用户名无效,但代码没有检查长度是否为 16,导致错误判断。 **总结:** 该 APK 安装程序验证用户名和注册码的正确性,但存在一些小bug,例如 MD5 解密长度校验不当和漏洞的存在。

正文

1. apk安装到手机,提示输入用户名注册码

2. jadx 打开apk

    public boolean checkSN(String userName, String sn) {
        try {
            if (userName.length() == 0 && sn.length() == 0) {
                return true;
            }
            if (userName == null || userName.length() == 0) {
                return false;
            }
            if (sn == null || sn.length() != 16) {
                return false;
            }
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.reset();
            digest.update(userName.getBytes());
            byte[] bytes = digest.digest();
            String hexstr = toHexString(bytes, BuildConfig.FLAVOR);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hexstr.length(); i += 2) {
                sb.append(hexstr.charAt(i));
            }
            String userSN = sb.toString();
            return userSN.equalsIgnoreCase(sn);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }

这里有个小bug,只要啥也不输就可以通过,直接点注册弹出来sn,哈哈
b3241668ecbeb19921fdac5ac1aafa69
MD5 解密得到 YOU_KNOW_

这里有个小坑,就是还有个doc文档,里面暗示里后缀接一个ANDROID

整个flag是 YOU_KNOW_ANDROID

与【Android 逆向】【攻防世界】RememberOther相似的内容:

【Android 逆向】【攻防世界】RememberOther

1. apk安装到手机,提示输入用户名注册码 2. jadx 打开apk public boolean checkSN(String userName, String sn) { try { if (userName.length() == 0 && sn.length() == 0) { retu

【Android 逆向】【攻防世界】基础android

1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // from class: com.example.test.ctf02.MainActivity.1

【Android 逆向】【攻防世界】android2.0

这是一道纯算法还原题 1. apk安装到手机,提示输入flag,看来输入就是flag 2. jadx 打开apk查看 this.button.setOnClickListener(new View.OnClickListener() { // from class: com.example.test

【Android 逆向】【攻防世界】APK逆向

1. apk安装到手机,提示输入flag 2. jadx打开apk 定位到checkSN方法 public boolean checkSN(String userName, String sn) { if (userName != null) { try { if (userName.length(

【Android 逆向】【攻防世界】人民的名义-抓捕赵德汉1-200

1. 这一题下载下来是个jar文件,感觉很android关系不大,但还是放在了mobile这个分类下了 2. 直接java jar运行,提示需要输入密码 # java -jar 169e139f152e45d5ae634223fe53e6be.jar Enter password: 1234 Inc

【Android 逆向】【攻防世界】ill-intentions

1. apk 安装到手机, 啥输入框都没有 2. apk拖入到jadx中看看 public class MainActivity extends Activity { @Override // android.app.Activity public void onCreate(Bundle save

【Android 逆向】【攻防世界】boomshakalaka-3

1. apk 安装到手机,是一个cocos2dx 写的打飞机的游戏 题目描述跟得分有关(题目描述: play the game, get the highest score) 2. jadx 打开apk public class FirstTest extends Cocos2dxActivity

【Android 逆向】【攻防世界】easy-apk

apk 安装到手机,随便输入点内容,提示错误 2. apk 拖入到jadx中看看 public class MainActivity extends AppCompatActivity { /* JADX INFO: Access modifiers changed from: protected

【Android 逆向】【攻防世界】app1

1. apk安装到手机, 老套路了 2. jadx打开 this.btn.setOnClickListener(new View.OnClickListener() { // from class: com.example.yaphetshan.tencentgreat.MainActivity.1

【Android 逆向】【攻防世界】app2

1. 手机安装apk,随便点击,进入到第二个页面就停了 2. jadx打开apk,发现一共有三个activity,其中第三个activity: FileDataActivity 里面有东西 public class FileDataActivity extends a { private TextV