• BUUCTF Re部分wp (java/apk特别篇)


    先推荐一下GDAhttps://bbs.pediy.com/thread-220111.htm

    Java逆向解密

    class,找了个在线网站:http://javare.cn

    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Reverse {
    
       public static void main(String[] args) {
          Scanner s = new Scanner(System.in);
          System.out.println("Please input the flag 锛�");
          String str = s.next();
          System.out.println("Your input is 锛�");
          System.out.println(str);
          char[] stringArr = str.toCharArray();
          Encrypt(stringArr);
       }
    
       public static void Encrypt(char[] arr) {
          ArrayList Resultlist = new ArrayList();
    
          for(int KEY = 0; KEY < arr.length; ++KEY) {
             int KEYList = arr[KEY] + 64 ^ 32;
             Resultlist.add(Integer.valueOf(KEYList));
          }
    
          int[] var5 = new int[]{180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};
          ArrayList var6 = new ArrayList();
    
          for(int j = 0; j < var5.length; ++j) {
             var6.add(Integer.valueOf(var5[j]));
          }
    
          System.out.println("Result:");
          if(Resultlist.equals(var6)) {
             System.out.println("Congratulations锛�");
          } else {
             System.err.println("Error锛�");
          }
    
       }
    }
    a=[180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
    b=[]
    for i in range(len(a)):
        b.append(a[i]-64^32)
    for i in b:
        print(chr(i),end="")

    findit

    apk,使用GDA打开,找到mainactivity

    有两个数组,找到

     

     变形的凯撒密码

    a=[0x0054,0x0068,0x0069,0x0073,0x0049,0x0073,0x0054,0x0068,0x0065,0x0046,0x006c,0x0061,0x0067,0x0048,0x006f,0x006d,0x0065]
    x=""
    b=[0x0070,0x0076,0x006b,0x0071,0x007b,0x006d,0x0031,0x0036,0x0034,0x0036,0x0037,0x0035,0x0032,0x0036,0x0032,0x0030,0x0033,0x0033,0x006c,0x0034,0x006d,0x0034,0x0039,0x006c,0x006e,0x0070,0x0037,0x0070,0x0039,0x006d,0x006e,0x006b,0x0032,0x0038,0x006b,0x0037,0x0035,0x007d]
    for i in range(len(a)):
        x+=chr(a[i])
    print(x)
    x=""
    for i in range(len(b)):
        if(chr(b[i]).isalpha()):
            x+=chr(b[i]-10)
        else:
            x+=chr(b[i])
    print(x)

    简单注册器

    GDA打开

    a="dd2940c04462b4dd7c450528835cca15"
    x=[]
    for i in a:
        x.append(i)
    x[2]=chr(ord(x[2])+ord(x[3])-50);
    x[4]=chr(ord(x[2])+ord(x[5])-48);
    x[30]=chr(ord(x[31])+ord(x[9])-48);
    x[14]=chr(ord(x[27])+ord(x[28])-97);
    print(x)
    for i in range(31,-1,-1):
        print(x[i],end="")

    相册

    apk病毒,要求找到邮箱,拖进GDA

    Malscan看看

     没找到邮箱相关,但从类里找到一个Mail类

     按x查看交叉引用找到

     去c2看看

    NativeMethod,要去so里找找base64密文

    [SCTF2019]Strange apk

    拖进GDA

     这里对一个名为data的文件进行了操作

    public byte[] c.__(String fileName)    //method@3ebd
    {
       InputStream in = in.open(fileName);
       int lenght = in.available();
       byte[] buffer = new byte[lenght];
       in.read(buffer);
       return buffer;
    }
    
    private void c._(byte[] apkdata)    //method@3ebb
    {
       apkdata = this._0_(apkdata);
       File file = new File(this.apkFileName);
       FileOutputStream localFileOutputStream = new FileOutputStream(file);
       localFileOutputStream.write(apkdata);
       localFileOutputStream.close();
       return;
    }
    
    private byte[] c._0_(byte[] srcdata)    //method@3ebc
    {
       String src = "syclover";
       for (int i = 0;i < srcdata.length();i++) {    
          srcdata[i]=(byte)(src.charAt((i%src.length()))^srcdata[i]);
       }    
       return srcdata;
    }

    在assets里找到data文件

    x=b"syclover"
    with open(r"data","rb") as f:
        f=f.read()
    with open(r"data_","wb") as F:
        for i in range(len(f)):
            F.write((f[i]^x[i%len(x)]).to_bytes(length=1, byteorder='big'))

    得到文件为zip,后缀改为apk拖进GDA

    有两处加密

     

     找到调用的位置

    出题者大概是写错了%,只要把“8”去除就行了

    [BSidesSF2019]blink

    拖进GDA,main中没看到什么,在函数列表上翻翻

    有个图片,解得flag

  • 相关阅读:
    fapws3 how to
    some tools
    Subversion文档(中文前6章)
    更改ubuntu root密码
    远程共享访问windows主机
    python下datetime类型的转换
    redis tips
    ubuntu在内存大过4g时会自动打pae补丁
    安装pythondoc
    redis hmset and set is not equviant
  • 原文地址:https://www.cnblogs.com/harmonica11/p/13126647.html
Copyright © 2020-2023  润新知