• BUUCTF-RE-findit


    一、

    apk文件用jeb打开   反编译

    二、jeb分析

     1 package com.example.findit;
     2 
     3 import android.os.Bundle;
     4 import android.support.v7.app.ActionBarActivity;
     5 import android.view.MenuItem;
     6 import android.view.View$OnClickListener;
     7 import android.view.View;
     8 
     9 public class MainActivity extends ActionBarActivity {
    10     public MainActivity() {
    11         super();
    12     }
    13 
    14     protected void onCreate(Bundle arg8) {
    15         super.onCreate(arg8);
    16         this.setContentView(2130903064);
    17         this.findViewById(2131034173).setOnClickListener(new View$OnClickListener(new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}, this.findViewById(2131034174), new char[]{'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'}, this.findViewById(2131034175)) {
    18             public void onClick(View arg13) {
    19                 int v11 = 17;
    20                 int v10 = 122;
    21                 int v9 = 90;
    22                 int v8 = 65;
    23                 int v7 = 97;
    24                 char[] v3 = new char[v11];
    25                 char[] v4 = new char[38];
    26                 int v0;
    27                 for(v0 = 0; v0 < v11; ++v0) {
    28                     if(this.val$a[v0] >= 73 || this.val$a[v0] < v8) {
    29                         if(this.val$a[v0] < 105 && this.val$a[v0] >= v7) {
    30                         label_39:
    31                             v3[v0] = ((char)(this.val$a[v0] + 18));
    32                             goto label_44;
    33                         }
    34 
    35                         if(this.val$a[v0] >= v8 && this.val$a[v0] <= v9 || this.val$a[v0] >= v7 && this.val$a[v0] <= v10) {
    36                             v3[v0] = ((char)(this.val$a[v0] - 8));
    37                             goto label_44;
    38                         }
    39 
    40                         v3[v0] = this.val$a[v0];
    41                     }
    42                     else {
    43                         goto label_39;
    44                     }
    45 
    46                 label_44:
    47                 }
    48 
    49                 if(String.valueOf(v3).equals(this.val$edit.getText().toString())) {
    50                     v0 = 0;
    51                     goto label_18;
    52                 }
    53                 else {
    54                     this.val$text.setText("答案错了肿么办。。。不给你又不好意思。。。哎呀好纠结啊~~~");
    55                     return;
    56                 label_18:
    57                     while(v0 < 38) {
    58                         if(this.val$b[v0] < v8 || this.val$b[v0] > v9) {
    59                             if(this.val$b[v0] >= v7 && this.val$b[v0] <= v10) {
    60                             label_80:
    61                                 v4[v0] = ((char)(this.val$b[v0] + 16));
    62                                 if((v4[v0] <= v9 || v4[v0] >= v7) && v4[v0] < v10) {
    63                                     goto label_95;
    64                                 }
    65 
    66                                 v4[v0] = ((char)(v4[v0] - 26));
    67                                 goto label_95;
    68                             }
    69 
    70                             v4[v0] = this.val$b[v0];
    71                         }
    72                         else {
    73                             goto label_80;
    74                         }
    75 
    76                     label_95:
    77                         ++v0;
    78                     }
    79 
    80                     this.val$text.setText(String.valueOf(v4));
    81                 }
    82             }
    83         });
    84     }
    85 
    86     public boolean onOptionsItemSelected(MenuItem arg3) {
    87         boolean v1 = arg3.getItemId() == 2131034176 ? true : super.onOptionsItemSelected(arg3);
    88         return v1;
    89     }
    90 }

    发现第17行的疑似加密过后的flag字符串pvkq{m164675262033l4m49lnp7p9mnk28k75}

    应该是用了移位  移位密码最著名的就是凯撒密码

    脚本如下

    a=input()
    model = "abcdefghijklmnopqrstuvwxyz"
    flag=''
    for i in range(1,27):
        print("key=%d"%i, end='
    ')
        for s in a:
            if s.isalpha():              //isalpha()测字符串是否只由字母组成
                n = model.find(s)        //find()检测字符串中是否包含子字符串model
                s = model[n-i]
            print(s, end='')
        print('
    ')

    三、flag

    flag{c164675262033b4c49bdf7f9cda28a75}

  • 相关阅读:
    CTO成长之路分享会
    MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚
    《共享经济》创业沙龙
    旅游代购
    沙漏哟的书单
    qt5---滑动条QSlider
    qt5---步长调节器SpinBox和QDoubleSpinBox
    qt5--自定义控件封装
    qt5--表格控件QTableWidget
    qt5--树形控件QTreeWidget
  • 原文地址:https://www.cnblogs.com/Nickyl07/p/12667886.html
Copyright © 2020-2023  润新知