zoukankan      html  css  js  c++  java
  • BMZCTF -- WP(12.26)

    BMZCTF(12.26)

    抽空做了一下,总体来说简单。总共三道题。全做了

    RE

    1.逆向_RE1

    image-20201231204156313

    主函数如图。

    加密流程

    输入字符串-->异或-->取余-->异或

    注意那个加密函数分析后发现是没有起到作用的

    直接爆破

    脚本

       str=[0x4D5E21, 0x4D5E2B, 0x4D5E3E, 0x4D5E20, 0x4D5E54,
        0x4D5E1D,0x4D5E0A, 0x4D5E35, 0x4D5E1C, 0x4D5E33, 0x4D5E01, 0x4D5E38,
       0x4D5E0D, 0x4D5E22, 0x4D5E32, 0x4D5E22, 0x4D5E37, 0x4D5E2C,
      0x4D5E6C, 0x4D5E38, 0x4D5E6E, 0x4D5E2C, 0x4D5E38, 0x4D5E1C,
         0x4D5E28, 0x4D5E6F, 0x4D5E6E, 0x4D5E5A]
            flag=''
            for i in range(0, 28):
                for f in range(0,127):
                  enc=f
                  enc^=0x1A2B3C
                  enc%=1714956
                  enc^=0x4D5E6F
                  if(enc==str[i]):
                      flag+=chr(f)
            print(flag)
    #flag{BMZCTF_ReUeXs3_1s_Co01}
    

    2.逆向_RE2

    主函数

    image-20201231210412007

    先读取字符串,传进Auth函数,看返回值是否为1.若是则为flag

    Auth函数

    加密流程

    切割字符串为三段-->每部分异或一个值-->每部分都传进SboxExchangeX(X=A,B,C)进行类似表替换-->进行结果判断

    脚本

    s1=[ 7,  5,  2, 4,
             3, 1,  6, 0,
             8]
    s2=[2,     6,      0,    7,  4,
        5, 1,   3,   8]
    s3=[ 3, 1,    6,
             0,   8,    5,
             2, 7,    4,  ]
    sss1=[0x0C8E, 0x0C85, 0x0C87, 0x0C99, 0x0CA4, 0x0CD1, 0x0C83, 0x0C8E,0x0C84]
    sss2=[0x0F9A, 0x0F8B, 0x0FA0, 0x0FCF, 0x0F8D, 0x0FA0, 0x0FB9, 0x0F9E,0x0FA0]
    sss3=[0x48F, 0x499, 0x48F, 0x497, 0x4DD, 0x4B5, 0x49C, 0x482, 0x4B8]
    ss1=[0]*9
    ss2=[0]*9
    ss3=[0]*9
    flag1=''
    flag2=''
    flag3=''
    for i in range(0,9):
        ss1[s1[i]]=sss1[i]^0xCE2
        ss2[s2[i]]=sss2[i]^0xFFF
        ss3[s3[i]]=sss3[i]^0x4EA
    for i in range(0,9):
        flag1+=chr(ss1[i])
    for i in range(0,9):
        flag2+=chr(ss2[i])
    for i in range(0,9):
        flag3+=chr(ss3[i])
    print(flag1[::-1]+flag2+flag3[::-1])
    #flag{Fe3l_Fear_t0_7he_Revs}
    

    3.逆向_RE2

    是一道mobile的逆向题。

    image-20201231213421798

    查壳

    image-20201231211049857

    jadx分析

    image-20201231211237017

    image-20201231211351163

    分析代码可知,有签名验证,然后判断点击次数,达标就跳转到另一Activity直接显示flag。

    (BUUOJ也有一道类似的题,那道题是直接改smali即可,这道题,因为加了签名验证,直接改,前面签名验证失败而打开不了)

    法一:直接逆算法

    加密算法如下:

    image-20201231211914231

    简单粗暴,直接扣出来直接逆(懒)

    脚本

    package com.re;
    
    public class EasyJava {
    
        /* access modifiers changed from: protected */
    
        int[] wocaozheshisha(int[] unenc) {
            for (int b = 0; b <= 34; b++) {
                unenc[b + 1] = unenc[b] ^ unenc[b + 1];
            }
            return unenc;
        }
        public static void main (String[] args) {
            int[] encF = {4, 5, 30, 27, 9, 55, 56, 53, 43, 15, 70, 90, 85, 14, 25, 9, 78, 54, 83, 96, 25, 23, 19, 115, 25, 49, 77, 75, 29, 28, 4, 122, 96, 110, 56, 16};
    
            re3 re3 = new re3();
            re3.wocaozheshisha(re3.wocaozheshisha(re3.wocaozheshisha(encF)));
            byte[] e = "bmz".getBytes();
            int i = 0;
            while (true) {
                int[] iArr = encF;
                if (i > iArr.length - 1) {
                    break;
                }
                iArr[i] = e[i % 3] ^ iArr[i];
                i++;
            }
            StringBuilder flag = new StringBuilder();
    
            for(int i2 = 0; i2 <= encF.length - 1; i2++) {
                flag.append((char) encF[i2]);
            }
    
        }
    }
    
    

    image-20201231212117790

    //flag{Every0ne-0f-BMZCTF-1s-3he-Best}
    

    法二:patch

    方法:使用AndroidKiller直接在AndroidManifest.xml配置文件修改默认启动项。(不启动那个页面即不会进行签名验证,从而达到我们的目的。)

    修改前

    image-20201231213141981

    修改后

    image-20201231213103933

    直接给flag

    image-20201231213341158

    法三:
    连点器?

  • 相关阅读:
    HTML5 图片预览
    ubuntu JAVA 安装
    跟着老猫来搞GO内建容器Map
    面试造火箭系列,栽在了cglib和jdk动态代理
    跟着老猫来搞GO,"面向对象"
    跟着老猫来搞GO内建容器slice
    跟着老猫来搞GO,基础进阶
    JavaScript中利用doucument.writeline()方法预生成代码的小技巧
    javascript学习记录
    你的逻辑性强吗?
  • 原文地址:https://www.cnblogs.com/pupububu/p/14218706.html
Copyright © 2011-2022 走看看