Re-攻防世界

easyEZbaby_app

Jadx

这个文件一般是窗口界面,点击中间的一般就是主函数

Obj1是用户名,obj2是密码

用户名

    public boolean checkUsername(String str) {
        if (str != null) {
            try {
                if (str.length() != 0 && str != null) {
                    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
                    messageDigest.reset();
                    messageDigest.update("zhishixuebao".getBytes());
                    String hexString = toHexString(messageDigest.digest(), "");
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < hexString.length(); i += 2) {
                        sb.append(hexString.charAt(i));
                    }
                    String sb2 = sb.toString();
                    return (sb2).equals(str);
                }
                return false;
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }
        return false;
    }

这部分是MD5加密,加密的内容是  "zhishixuebao"

MD5解密脚本

import hashlib
flag='zhishixuebao'
x = hashlib.md5(flag.encode("utf8"))#md5和类似的,就讲sha1更换就行
y = x.hexdigest()
print(y)

7da5fec345fecde5fdcd641f68e0b6d1

for循环,i+=2

p='7da5fec345fecde5fdcd641f68e0b6d1'
flag=''
for i in range(0,len(p),2):
    flag+=p[i]
print(flag)

7afc4fcefc616ebd

来看密码

    public boolean checkPass(String str) {
        if (str != null) {
            char[] charArray = str.toCharArray();
            if (charArray.length != 15) {
                return false;
            }
            for (int i = 0; i < charArray.length; i++) {
                charArray[i] = (char) ((((255 - i) + 2) - 98) - charArray[i]);
                if (charArray[i] != '0' || i >= 15) {
                    return false;
                }
            }
            return true;
        }
        return false;
    }

循环15次,通过一系列的数学运算和字符转换来生成flag

a=''

for i in range(15):

   a+=chr(((255 - i) + 2) - 98-48)

print(a)

得到

onmlkjihgfedcba

那么flag就是用户名+密码

flag{7afc4fcefc616ebdonmlkjihgfedcba}

Ereere

Shift+f12查找字符串

定位到主函数

跟进sub_400864()函数,看到256,想到rc4

进入aFlag1233213211

回到主函数再跟进sub_400550

进aZyxwvutsrqponm发现base64密码表

主函数

想将rc4进行了加密然后base64解密然后与ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ== 相比,如果相同就输出flag的值

那么逆向的思路是

将base64进行换表之后ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ==

进行base64解密 然后再进行RC4解密就能得到flag 

import base64

flag = ""

key = "ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ=="

string1 = "ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz/+9876543210"  # string1表示更换后的码表

string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  # string2表示原始码表

print("Base64还原: ", key.translate(str.maketrans(string1, string2)))   # 将 key 还原成初始码表加密后的结果

Str = base64.b64decode(key.translate(str.maketrans(string1, string2)))  # Base64解密,bytes型

print("Base64解密: ", Str)

byte_4A0860 = []

aFlag1233213211 = "flag{123321321123badbeef012}"

# rc4_init

for i in range(256):

    byte_4A0860.append(i)

v4 = 0

v3 = 0

for j in range(256):

    v5 = byte_4A0860[j]

    v3 = (v5 + v3 + ord(aFlag1233213211[int(j % len(aFlag1233213211))])) & 0xff

    byte_4A0860[j] = byte_4A0860[v3]

    byte_4A0860[v3] = v5

    v4 = v4 + 1

    if v4 >= len(aFlag1233213211):

        v4 = 0

print("s_box:", end=" ")

for j in range(256):

    print(byte_4A0860[j], end=" ")

print()

# rc4_crypt

v4 = 0

v3 = 0

for k in range(len(Str)):

    v3 = (v3 + 1) & 0xff

    v4 = (byte_4A0860[v3] + v4) & 0xff

    v5 = byte_4A0860[v3]

    byte_4A0860[v3] = byte_4A0860[v4]

    byte_4A0860[v4] = v5

    flag += chr(Str[k] ^ byte_4A0860[(byte_4A0860[v3] + byte_4A0860[v4]) & 0xff])

print(flag)

flag{RC_f0ur_And_Base_s1xty_f0ur_Encrypt_!}

Mine-

下载完是一个exe程序,运行一下

拖到ida看main函数

这段代码是一个用C++编写的扫雷游戏程序,或许扫完了就能拿到flag?

ans:存储游戏结束时显示的字符串。

还有rand函数和srand函数的调用,说明这里游戏地图是随机生成的,所以不会根据输入的点位来解密或者生成flag

修改rip

右键modify

F9运行

7ii3VecVgof3r6ssiP2g7E3HqwqhM

flag{h4pp4-M1n3-G4m3}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86493.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵题解——搜索二维矩阵 II【LeetCode】

240. 搜索二维矩阵 II 1.1 核心思想 问题描述&#xff1a;给定一个 m x n 的二维矩阵&#xff0c;矩阵的每一行从左到右递增&#xff0c;每一列从上到下递增。判断目标值 target 是否存在于矩阵中。解决思路&#xff1a; 从矩阵的右上角&#xff08;或左下角&#xff09;开始搜…

dockerfile文件详解之基础语法

dockerfile文件详解之基础语法 一般而言 Dockerfile 可以分为4个部分 &#xff08;1&#xff09;基础镜像信息&#xff0c; &#xff08;2&#xff09;维护者信息 &#xff08;3&#xff09;镜像操作命令 &#xff08;4&#xff09;启动时执行指令 1-注释 用 # 来进行注…

WebFuture:独立一级域名nginx取消配置Secure属性的问题

问题分析&#xff1a; 部分站群站点使用了独立一级域名&#xff0c;但是前台问卷调查等模块无法提交&#xff0c;排查是由于主站启用了https&#xff0c;配置了cookies的Secure属性是true&#xff0c;但是子站的独立一级域名没有使用https&#xff0c;所以浏览器不能写入cooki…

【网站内容安全检测】之3:获取所有外部域名访问后图像

Go语言调用Chrome浏览器去进行截图的操作&#xff0c;对电脑的性能要求比较高&#xff0c;所以速度比较有限&#xff0c;但是目前来看这种方式可以最佳的去获取网页加载后的结果。 main.go package mainimport ("context""errors""flag""…

华曦达港股IPO递表,AI Home生态构建智能生活新蓝图

在智能家居逐渐普及的当下&#xff0c;华曦达打造的AI Home生态为用户提供了更智能、便捷的生活解决方案&#xff0c;在行业中展现出独特优势。 华曦达AI Home生态由AI Home系统平台、AI Home基础设施、AI Home设备以及可连接外部设备的开放式设备矩阵构成&#xff0c;是一个开…

java+vue+SpringBoo智慧农业专家远程指导系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot数据库&#xff1a;mysql 开发工具 JDK版本&#xff1a;JDK1.…

免费AI助手工具深度测评:Claude4本地化部署与实战应用指南

免费AI助手工具深度测评&#xff1a;Claude4本地化部署与实战应用指南 AI无限对话免费Rovo工具Claude4碾压cursor和augment 前言 在AI工具日益普及的今天&#xff0c;大多数高质量的AI助手都需要付费订阅或有使用限制。然而&#xff0c;最近发现了一款基于Claude 4的免费AI助手…

MCP浏览器工具:playwright、chrome-mcp

参考&#xff1a; https://github.com/microsoft/playwright-mcp https://github.com/hangwin/mcp-chrome chrome-mcp安装需要额外安装成浏览器插件 用cherrystudio v1.4.5测试 mcp配置&#xff1a; "chrome-mcp-server": {"name": "chrome-mcp-serve…

水利水电安全员考试不同等级的考试内容有哪些区别?

水利水电安全员考试一般分为企业主要负责人&#xff08;A 类&#xff09;、项目负责人&#xff08;B 类&#xff09;和专职安全生产管理人员&#xff08;C 类&#xff09;三个等级。不同等级的考试内容都包括安全生产知识和管理能力两部分&#xff0c;但具体的侧重点有所不同。…

关于USB模式的一些内容(附USB接口颜色释义图)

今天在处理工作中的事情的时候,突然有个产品的小伙伴来问关于USB的事情,顺便给她简单说了下。USB接口模式主要包括以下几种:Host(主机模式)、Device(设备模式)、OTG(On-The-Go),以及较少使用的Accessory模式。以下是对这些模式的详细说明、区别差异及应用场景: 1. H…

React中的ErrorBoundary

文章目录 前言✅ 一、使用类组件实现 ErrorBoundary&#xff08;官方推荐方式&#xff09;用法示例&#xff1a; ✅ 二、用函数组件实现 ErrorBoundary&#xff08;借助 Hook react-error-boundary 库&#xff09;1. 安装 react-error-boundary2. 使用 ErrorBoundary 组件&…

历年西北工业大学计算机保研上机真题

西北工业大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/problem 海伦公式求面积 题目描述 给定三角形的三条边长 a a a, b b b, c c c&#xff0c;先判断这三条边是否能构成一个三角形。 如果不能构成三角形&#xff0c;输出 N a N NaN NaN&#…

扫地机产品认证--黑名单制裁公司能否拿到美国产品准入许可(FCC认证)

扫地机产品认证–黑名单制裁公司能否拿到美国产品准入许可(FCC认证) 文章目录 扫地机产品认证--黑名单制裁公司能否拿到美国产品准入许可(FCC认证)⚠️ **一、核心限制规则**📋 **二、企业需满足的额外条件**🛡️ **三、黑名单企业的应对可能性**💎 **四、总结**产品认证…

数据结构复习2

第二章 线性表 2.1线性表的定义和基本操作 线性表&#xff1a;一种逻辑结构&#xff0c;表示数据元素之间的一对一线性关系&#xff08;如数组、链表、栈、队列等&#xff09;。 2.1.1线性表的定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列。 (其中n为表长…

空间转录组benchmark 相关 读完scGPT spatial 和 空间单细胞基因乳房细胞数据集文章之后

文章目录 ✅ 空间转录组测序方式总体划分&#x1f9ec; 成像型空间转录组&#xff08;Imaging-based ST&#xff09;原理&#xff1a;技术代表 & 特点&#xff1a;优点&#xff1a;局限&#xff1a; &#x1f9ec; 测序型空间转录组&#xff08;Sequencing-based ST&#x…

清理华为云服务器内存使用率

这里写自定义目录标题 一、正确终止进程&#xff1a;不要带尖括号二、看清楚谁“真吃”了内存三、临时清掉缓存&#xff08;谨慎用&#xff09;四、长期优化1. 给系统加个 Swap2. 调整 MySQL 内存配置3. 水平&#xff0f;垂直扩容4. 告警 总结与下一步 华为云的“内存使用率”默…

Go 语言中的 package 和 go modules

1、package 的定义和导入 在任何大型软件项目中&#xff0c;代码的组织和管理都是至关重要的。Go 语言通过 包&#xff08;Package&#xff09; 的概念来解决这个问题&#xff0c;它不仅是代码组织的基础&#xff0c;也是代码复用的关键。本文将深入探讨 Go 语言中包的定义、规…

C#语言入门-task4 :C#语言的高级应用

C# 作为一门现代化、面向对象的编程语言&#xff0c;在企业级应用、游戏开发、移动应用、云计算等领域有着广泛的应用。以下是 C# 语言的一些高级应用场景和技术方向&#xff1a; 一、高级语言特性与编程范式 1. 异步编程&#xff08;Async/Await&#xff09; 应用场景&…

FastAPI vs Flask vs Django:Python Web框架全面对比

Python 作为最受欢迎的编程语言之一&#xff0c;其 Web 开发生态极为丰富。FastAPI、Flask 和 Django 是当前主流的三大 Python Web 框架&#xff0c;各有千秋。本文将从架构设计、开发效率、性能表现、生态支持、适用场景等方面&#xff0c;全面对比这三大框架&#xff0c;帮助…

如何从零开始掌握Pandas的DataFrame使用

视频演示 如何通过实例学习Pandas DataFrame的创建与数据访问 &#x1f9e9; 理解 Pandas DataFrame&#xff1a;数据分析的核心结构 Pandas 是 Python 中用于数据分析与处理的主力库&#xff0c;而 DataFrame 是 Pandas 最常用的二维表格数据结构。我们可以将其想象成一个 Ex…