2023春节解题领红包安卓三、四

查看 72|回复 9
作者:jc021227   
第三题
打开软件,提示点击999下获得flag,不多想,直接上连点器,顺利获取flag


1.jpg (72.77 KB, 下载次数: 0)
下载附件
2023-2-7 17:10 上传

这种方法有个bug,点击速度太快会卡死,设置点击间隔500ms放一会就出答案了
下面来分析一下代码


8.png (43.64 KB, 下载次数: 0)
下载附件
2023-2-7 19:11 上传

只有一步decrypt,修改掉kotlin的方法运行即可得到答案
第四题
打开软件,要求输入uid和flag,随便输入提示flag错误
直接拖进jadx反编译


3.png (14.12 KB, 下载次数: 0)
下载附件
2023-2-7 18:42 上传



2.png (32.96 KB, 下载次数: 0)
下载附件
2023-2-7 18:41 上传

关键的类就几个,看判断条件是调用A类的B方法验证,两个参数其实就是输入的uid和flag
下面直接找到A类的B方法


4.png (38.47 KB, 下载次数: 0)
下载附件
2023-2-7 18:45 上传

第一个判断条件的意思是flag要以"flag{"开头,"}"结束,然后截取大括号里面的字符串用作判断
接下来把uid和字符串"Wuaipojie2023"进行拼接
还有几行是用来创建对象,类型转换,直接跳过看返回值,发现这一串方法调用:c.cipher(mD5Utils.MD5(base64Utils.encodeToString(bytes)), 5)
第一层加密是base64,第二层是md5,不用多说
第三层这个cipher并不是库函数,发现它位于自定义的C类,直接找到源码


5.png (28.89 KB, 下载次数: 0)
下载附件
2023-2-7 18:55 上传

思路是复制下来运行,但它用到了kotlin库的compare,简单改写一下就能运行了
java代码如下:
[Java] 纯文本查看 复制代码import java.util.Base64;
import java.security.MessageDigest;
public class Solve {
    public static void main(String args[]) {
        String p0 = "1048772Wuaipojie2023";
        p0 = encode(p0);
        byte bytes[] = p0.getBytes();
        p0 = Base64.getEncoder().encodeToString(bytes);
        p0 = getMD5(p0);
        p0 = cipher(p0, 5);
        System.out.println("flag{" + p0 + "}");
    }
    public static String encode(String p0) {
        int i = p0.length();
        char uocharArray[] = new char;
        i = i - 1;
        while (i >= 0) {
            int i1 = i - 1;
            int i2 = p0.charAt(i) ^ 0x35;
            uocharArray = (char) i2;
            if (i1 = 65) && (p0.charAt(i1)  122)) {
                str = str + p0.charAt(i1);
            } else {
                str = str + cipher(p0.charAt(i1), p1);
            }
            i1 = i1 + 1;
        }
        return str;
    }
    public static String getMD5(String text) {
        String md5str = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte result[] = md.digest(text.getBytes());
            md5str = bytesToHex(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5str;
    }
    public static String bytesToHex(byte bytes[]) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i = 0 && number


6.png (116.25 KB, 下载次数: 1)
下载附件
2023-2-7 19:07 上传

成功如图


7.jpg (85.14 KB, 下载次数: 0)
下载附件
2023-2-7 19:09 上传

下载次数, 下载附件

sw7057   


爱飞的猫 发表于 2023-2-7 21:01
下次改成 0x7fff_ffff 吧

其实改成-1就行了
bluefirejl   

好家伙,我只是写着玩的,没想到还真有上连点器的啊
xhj666   

学习了,长知识了。
Remon1900   


侃遍天下无二人 发表于 2023-2-7 20:27
好家伙,我只是写着玩的,没想到还真有上连点器的啊

下次改成 0x7fff_ffff 吧
jyjjf   


爱飞的猫 发表于 2023-2-7 21:01
下次改成 0x7fff_ffff 吧

便宜这些点击仔了
bluefirejl   


侃遍天下无二人 发表于 2023-2-7 21:30
其实改成-1就行了

我把0x3e7改成0x2
sw7057   

哈哈,没想到
Remon1900   

谢谢大佬,虽然看不懂也不会用
xhj666   


侃遍天下无二人 发表于 2023-2-7 20:27
好家伙,我只是写着玩的,没想到还真有上连点器的啊

我就是偷懒用的连点器,第一次还过头了没设置次数
您需要登录后才可以回帖 登录 | 立即注册