首页 > 编程语言 >BUUCTF Java逆向解密 RE

BUUCTF Java逆向解密 RE

时间:2023-02-08 00:14:08浏览次数:65  
标签:BUUCTF Java ArrayList 191 System RE flag println out

Java逆向,百度一下采用Jadx-gui
打开后得到如下代码

package defpackage;

import java.util.ArrayList;
import java.util.Scanner;

/* renamed from: Reverse  reason: default package */
/* loaded from: Reverse.class */
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<Integer> Resultlist = new ArrayList<>();
        for (char c : arr) {
            int result = (c + '@') ^ 32;
            Resultlist.add(Integer.valueOf(result));
        }
        int[] KEY = {180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};
        ArrayList<Integer> KEYList = new ArrayList<>();
        for (int i : KEY) {
            KEYList.add(Integer.valueOf(i));
        }
        System.out.println("Result:");
        if (Resultlist.equals(KEYList)) {
            System.out.println("Congratulations!");
        } else {
            System.err.println("Error!");
        }
    }
}

核心代码就是int result = (c + '@') ^ 32;
对所输入字符串字符+64 ^ 32后若和KEY中的值相同即为正确的flag
脚本如下

点击查看
key = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
flag =""
for i in range(len(key)):
  flag+=chr((key[i]^32)-64)
print(flag)

得到flagThis_is_the_flag_!

标签:BUUCTF,Java,ArrayList,191,System,RE,flag,println,out
From: https://www.cnblogs.com/Tree-24/p/17100217.html

相关文章

  • java创建线程的方式有几种?
    java中创建线程的方式有多少种,这个问题也是众多纷纭,这个时候更应该参考官方文档(https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html)了,文档很明确地指出......
  • R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
    原文链接:http://tecdat.cn/?p=23344最近我们被客户要求撰写关于信用卡违约的研究报告,包括一些图形和统计输出。本文中我们介绍了决策树和随机森林的概念,并在R语言中用逻......
  • JavaScript五花八门的跳转方式
    我们最常见的跳转方式是location.href="http://www.baidu.com",这种是最常见的,但是常常使用location.replace,location.assign,,window.open,history.replaceState,location.......
  • VII MaratonUSP Freshman Contest
    A.AbductingNathan!每得2k分会轮回,模2k后,小于k先手,反之后手#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intread(){ intx=0,ch=g......
  • @EnableDiscoveryClient和@EnableEurekaClient springboot3.x
    @EnableDiscoveryClient和@EnableEurekaClient将一个微服务注册到EurekaServer(或其他服务发现组件,例如Zookeeper、Consul等)的步骤1、添加客户端依赖 2、写注解注意......
  • Java07
    一、面向过程&面向对象1.面向过程:线性思维,处理简单问题2.面向对象:分类,复杂问题 二、面向对象(OOP)1.本质:以类的方式组织代码,以对象的组织(封装)数据。......
  • Django3.X使用富文本编辑器kindereditor上传图片时一直转圈圈,如何解决
    问题描述:在写bbs项目的时候,老师用的是Django1.X结合富文本编辑器kindeditor,实现了图片上传,但是我在用Django3.X的时候,代码和老师一模一样,上传图片的时候一直转圈圈???但是文......
  • netcore日志
    1.日志信息源ILoggingILogging//nuget包Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging.Console//控制器publicclassWeatherForecastController:C......
  • java面试题(四)
    1.java面试题(四)1.1cap理论,base理论1.Consistency(一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问......
  • CSharp: donet 7 create database view mapping with EF core 7.02
     sql: createviewViewEmployeeMastersasselecta.*,b.Nameas'DepartmentName',b.Codeas'DepartmentCode'fromEmployeeMastersasa,DepartmentMasterasb......