XY_RE复现(二)

news2025/1/23 6:02:27

一,何须相思煮余年

0x55  0x8b  0xec  0x81  0xec  0xa8  0x0  0x0  0x0  0xa1  0x0  0x40  0x41  0x0  0x33  0xc5  0x89  0x45  0xfc  0x68  0x9c  0x0  0x0  0x0  0x6a  0x0  0x8d  0x85  0x60  0xff  0xff  0xff  0x50  0xe8  0x7a  0xc  0x0  0x0  0x83  0xc4  0xc  0xc7  0x85  0x58  0xff  0xff  0xff  0x27  0x0  0x0  0x0  0xc7  0x85  0x5c  0xff  0xff  0xff  0x0  0x0  0x0  0x0  0xeb  0xf  0x8b  0x8d  0x5c  0xff  0xff  0xff  0x83  0xc1  0x1  0x89  0x8d  0x5c  0xff  0xff  0xff  0x83  0xbd  0x5c  0xff  0xff  0xff  0x27  0xf  0x8d  0xed  0x0  0x0  0x0  0x8b  0x95  0x5c  0xff  0xff  0xff  0x81  0xe2  0x3  0x0  0x0  0x80  0x79  0x5  0x4a  0x83  0xca  0xfc  0x42  0x85  0xd2  0x75  0x25  0x8b  0x85  0x5c  0xff  0xff  0xff  0x8b  0x8c  0x85  0x60  0xff  0xff  0xff  0x3  0x8d  0x5c  0xff  0xff  0xff  0x8b  0x95  0x5c  0xff  0xff  0xff  0x89  0x8c  0x95  0x60  0xff  0xff  0xff  0xe9  0xac  0x0  0x0  0x0  0x8b  0x85  0x5c  0xff  0xff  0xff  0x25  0x3  0x0  0x0  0x80  0x79  0x5  0x48  0x83  0xc8  0xfc  0x40  0x83  0xf8  0x1  0x75  0x22  0x8b  0x8d  0x5c  0xff  0xff  0xff  0x8b  0x94  0x8d  0x60  0xff  0xff  0xff  0x2b  0x95  0x5c  0xff  0xff  0xff  0x8b  0x85  0x5c  0xff  0xff  0xff  0x89  0x94  0x85  0x60  0xff  0xff  0xff  0xeb  0x73  0x8b  0x8d  0x5c  0xff  0xff  0xff  0x81  0xe1  0x3  0x0  0x0  0x80  0x79  0x5  0x49  0x83  0xc9  0xfc  0x41  0x83  0xf9  0x2  0x75  0x23  0x8b  0x95  0x5c  0xff  0xff  0xff  0x8b  0x84  0x95  0x60  0xff  0xff  0xff  0xf  0xaf  0x85  0x5c  0xff  0xff  0xff  0x8b  0x8d  0x5c  0xff  0xff  0xff  0x89  0x84  0x8d  0x60  0xff  0xff  0xff  0xeb  0x38  0x8b  0x95  0x5c  0xff  0xff  0xff  0x81  0xe2  0x3  0x0  0x0  0x80  0x79  0x5  0x4a  0x83  0xca  0xfc  0x42  0x83  0xfa  0x3  0x75  0x20  0x8b  0x85  0x5c  0xff  0xff  0xff  0x8b  0x8c  0x85  0x60  0xff  0xff  0xff  0x33  0x8d  0x5c  0xff  0xff  0xff  0x8b  0x95  0x5c  0xff  0xff  0xff  0x89  0x8c  0x95  0x60  0xff  0xff  0xff  0xe9  0xf7  0xfe  0xff  0xff  0x33  0xc0  0x8b  0x4d  0xfc  0x33  0xcd  0xe8  0x4  0x0  0x0  0x0  0x8b  0xe5  0x5d  0xc3  

enc = [88,88,134,87,74,118,318,101,59,92,480,60,65,41,770,110,73,31,918,39,120,27,1188,47,77,24,1352,44,81,23,1680,46,85,15,1870,66,91,16,4750]

txt文件,一大串数据,应该是机器码,首先想着肯定先机器码变汇编代码

要先转换成:

55 8B EC 81 EC A8 00 00 00 A1 00 40 41 00 33 C5 89 45 FC 68 9C 00 00 00 6A00 8D 85 60 FF FF FF 50 E8 7A 0C 00 00 83 C4 0C C7 85 58 FF FF FF 27 00 0000 C7 85 5C FF FF FF 00 00 00 00 EB 0F 8B 8D 5C FF FF FF 83 C1 01 89 8D 5CFF FF FF 83 BD 5C FF FF FF 27 0F 8D ED 00 00 00 8B 95 5C FF FF FF 81 E2 0300 00 80 79 05 4A 83 CA FC 42 85 D2 75 25 8B 85 5C FF FF FF 8B 8C 85 60 FFFF FF 03 8D 5C FF FF FF 8B 95 5C FF FF FF 89 8C 95 60 FF FF FF E9 AC 00 0000 8B 85 5C FF FF FF 25 03 00 00 80 79 05 48 83 C8 FC 40 83 F8 01 75 22 8B8D 5C FF FF FF 8B 94 8D 60 FF FF FF 2B 95 5C FF FF FF 8B 85 5C FF FF FF 8994 85 60 FF FF FF EB 73 8B 8D 5C FF FF FF 81 E1 03 00 00 80 79 05 49 83 C9FC 41 83 F9 02 75 23 8B 95 5C FF FF FF 8B 84 95 60 FF FF FF 0F AF 85 5C FFFF FF 8B 8D 5C FF FF FF 89 84 8D 60 FF FF FF EB 38 8B 95 5C FF FF FF 81 E203 00 00 80 79 05 4A 83 CA FC 42 83 FA 03 75 20 8B 85 5C FF FF FF 8B 8C 8560 FF FF FF 33 8D 5C FF FF FF 8B 95 5C FF FF FF 89 8C 95 60 FF FF FF E9 F7FE FF FF 33 C0 8B 4D FC 33 CD E8 04 00 00 00 8B E5 5D C3

有一个在线网站:Online x86 and x64 Intel Instruction Assembler (defuse.ca)

不是特别好看,想想还能不能转换成高级语言。

看别人wp:010 Editor 打开,把上面整理的字节码全部复制到十六进制文件里,保存之后使用IDA打开 。先全选强制分析,但有很多爆红,先不管直接变函数,但不太对。别人的好像是直接成功了,悲(,不知道哪里出问题了,重新来一遍。

别人的:

 别人的好像是二进制文件,我的是十六进制文件,可能是这个问题吧。

二,今夕是何年

说运行起来就给flag

装qemu可以跑,试试,装好了,真的出flagl

sudo apt install libc6-riscv64-cross
sudo apt install binutils-riscv64-linux-gnu
sudo apt install gcc-riscv64-linux-gnu
sudo apt install binutils-riscv64-unknown-elf
sudo apt install gcc-riscv64-unknown-elf
sudo apt install qemu-system-misc
sudo apt install qemu-user
若出现“/lib/ld-linux-riscv64-lp64d.so.1”报错
则再终端输入‘sudo cp /usr/riscv64-linux-gnu/lib/* /lib/’就可以了,因为文件下载的地方,和查
找的地方不一样,只要把文件cp一下就可以了

三,easy language

 

cmd窗口:拒绝访问。

 

提示是易语言的,拖进ida试试,不能分析。 

看wp要加个插件。

IDA进行逆向得知,原来hexray在生成伪代码的时候会调用一个calc_c_cpp_name函数,该函数会试图针对C/C++的函数名称进行优化,结果却误伤中文字符,我们将此处代码给NOP掉,就可以了。

ctrl+3可以换出插件窗口。 

得到了一个新程序

在字符串窗口,找到关键信息的位置, 发现是红的,全选然后按P

得到关键函数

int sub_4015CC()
{
  void *v0; // eax
  void *v1; // eax
  _DWORD *v2; // eax
  unsigned int v3; // ecx
  int v4; // ebx
  int v5; // eax
  int result; // eax
  _BYTE *v7; // [esp-8h] [ebp-24h]
  void *v8; // [esp-4h] [ebp-20h]
  void *v9; // [esp+0h] [ebp-1Ch]
  LPVOID v10; // [esp+4h] [ebp-18h] BYREF
  LPVOID v11; // [esp+8h] [ebp-14h] BYREF
  LPVOID v12; // [esp+Ch] [ebp-10h] BYREF
  LPVOID lpMem; // [esp+10h] [ebp-Ch] BYREF
  LPVOID v14; // [esp+14h] [ebp-8h]
  LPVOID v15; // [esp+18h] [ebp-4h] BYREF

  v15 = 0;
  v14 = 0;
  v0 = (void *)sub_40937A(1375797348, (LPCSTR)0x16010066, 8, -1);
  lpMem = v0;
  if ( !v0 )
    v0 = &unk_4A41DB;
  v12 = (LPVOID)sub_40936E(1, (char)v0, 0, -2147483644);
  if ( lpMem )
    free(lpMem);
  v11 = 0;
  v10 = "AES-ECB";
  v9 = (void *)sub_401975(&v12, &dword_59D0F0, &v10, 1, 7, 1, &v11, 0);
  if ( v12 )
    free(v12);
  if ( v10 )
    free(v10);
  if ( v11 )
    free(v11);
  if ( v15 )
    free(v15);
  v15 = v9;
  lpMem = sub_403E67((int)&v15);
  v8 = lpMem;
  if ( v14 )
    free(v14);
  v14 = v8;
  LOBYTE(v1) = (_BYTE)v8;
  if ( !v8 )
    v1 = &unk_4A41DB;
  v2 = (_DWORD *)sub_40936E(1, (char)v1, 0, -2147483644);
  lpMem = v2;
  v3 = 0;
  if ( v2 )
    v3 = v2[1];
  v7 = v2 + 2;
  v4 = 0;
  if ( dword_59D0F4 )
    v4 = *((_DWORD *)dword_59D0F4 + 1);
  v5 = 1;
  if ( v4 == v3 )
  {
    v5 = 0;
    if ( v3 )
      v5 = strlen((_BYTE *)dword_59D0F4 + 8, v7, v3);
  }
  v12 = (LPVOID)(v5 == 0);
  if ( lpMem )
    free(lpMem);
  if ( v12 )
  {
    lpMem = (LPVOID)sub_40937A(1375797348, (LPCSTR)0x16010066, 8, -1);
    v12 = (LPVOID)sub_404471((int)&lpMem);
    if ( lpMem )
      free(lpMem);
    if ( v12 == (LPVOID)29 )
      result = sub_409374((HWND)0x52010064, (LPCSTR)0x16010065, 8, -1, "real?!", 0);
    else
      result = sub_409374((HWND)0x52010064, (LPCSTR)0x16010065, 8, -1, "E++ is so easy!", 0);
  }
  else
  {
    result = sub_409374((HWND)0x52010064, (LPCSTR)0x16010065, 8, -1, byte_4A41FB, 0);
  }
  if ( v15 )
    result = free(v15);
  if ( v14 )
    return free(v14);
  return result;
}

很多函数不认识,烦(,

据wp说是AES-ECB和basse64。

 

 

不对,可以:

 

得到关键函数,但太丑了。尽是sub_地址,下来搜搜看。

也附上别人的脚本

from crypto.Cipher import AES
import base64

# 给定的字节串 byte_string
byte_string = b'E\x9c\xbf\xcdQ\x160\x9cAZ\t\xbc\xc2\x84\x08<\xc7n\x97e\x8a\xf9\xd6\xb3U\x9c\xcf\xb3\x06\x80i\xde\x0c\x9a\xf7r\xfdA\x05\xe9\x15\x18\xa7\xd4\x917\xde\xfc\xb1'

# 将字节串转换为整数
integer_value = int.from_bytes(byte_string, byteorder='big')

# 将整数拆分为三个部分,每部分包含16个字节
first_part_integer = integer_value >> 256
second_part_integer = (integer_value >> 128) & ((1 << 128) - 1)
third_part_integer = integer_value & ((1 << 128) - 1)

# 将每个部分转换回字节串
first_part_bytes = first_part_integer.to_bytes(16, byteorder='big')
second_part_bytes = second_part_integer.to_bytes(16, byteorder='big')
third_part_bytes = third_part_integer.to_bytes(16, byteorder='big')

# 打印结果
print("第一部分:", first_part_bytes)
print("第二部分:", second_part_bytes)
print("第三部分:", third_part_bytes)

# 根据动态调试找到的密钥
key = b'welcometoxyctf!!'

# 创建 AES 解密器
cipher = AES.new(key, AES.MODE_ECB)

# 解密每个部分
part1 = cipher.decrypt(first_part_bytes)
part2 = cipher.decrypt(second_part_bytes)
part3 = cipher.decrypt(third_part_bytes)

# 打印解密结果
print("成功解出flag 第一部分:", part1)
print("成功解出flag 第二部分:", part2)
print("成功解出flag 第三部分:", part3)
print("flag是:", part1 + part2 + part3)

 

 

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

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

相关文章

【中级软件设计师】上午题12-软件工程(3):项目活动图、软件风险、软件评审、软件项目估算

【中级软件设计师】上午题12-软件工程&#xff08;3&#xff09; 1 软件项目估算1.1 COCOMO估算模型1.2 COCOMOⅡ模型 2 进度管理2.1 gantt甘特图2.2 pert图2.3 项目活动图2.3.1 画项目图 3 软件配置管理4 软件风险4.1 风险管理4.2 风险识别4.3 风险预测4.4 风险评估4.5 风险控…

大模型(LLM)调用API论文研究合集

1、API-BLEND: A Comprehensive Corpora for Training and Benchmarking API LLMs 中文标题&#xff1a;API-BLEND: 一个用于训练和评测 API 语言模型的全面语料库 简介&#xff1a;随着大型语言模型(LLM)的发展,它们需要能够有效地利用各种工具和应用程序接口(API)来完成复杂…

GNU Radio之OFDM Channel Estimation底层C++实现

文章目录 前言一、 OFDM Channel Estimation 模块简介二、C 具体实现1、初始化和配置参数2、forecast 函数3、计算载波偏移量4、提取信道响应5、核心的数据处理任务 前言 OFDM Channel Estimation 模块的功能是根据前导码&#xff08;同步字&#xff09;估计 OFDM 的信道和粗略…

Java:SpringBoot如何优化启动速度

一、yml中设置懒加载 spring:main:lazy-initialization: true 二、SpringBoot启动类中添加注解 Indexed &#xff08;Spring5才有该注解&#xff09; Indexed EnableAsync RestController SpringBootApplication(exclude {WxMaAutoConfiguration.class}) EnableTransactionM…

web服务的部署及高级优化

搭建web服务器 1.1、配置主机IP以及软件仓库搭建 [rootserver129 ~]# vmset.sh 100 //主机IP配置为172.25.254.100 1.2、查看搭建web服务器所需的软件包 [rootserver100 ~]# dnf search nginx 名称 精准匹配&#xff1a;nginx nginx.x86_64 : A high performance web serve…

31.基础乐理-首调与固定调

首调与固定调的概念&#xff1a; 首调 与 固定调 这两个词都是针对 唱名 来说的&#xff0c;针对唱名1234567 来说的&#xff0c;和别的没什么关系&#xff0c;这两个概念是唱名的两种不同表达方式 首调&#xff1a;虽然各个大调实际使用的按键、使用的音名都是不一样的&#x…

【4103】基于小程序实现的老年人健康管理平台

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

学习C语言的指针

有一阵没更新了&#xff0c;因为最近比较繁忙&#xff0c;所以更新比较慢&#xff0c;还在慢慢学习 话不多说&#xff0c;开始今天的内容&#xff0c;聊一聊C语言指针。 很多小伙伴可能会被指针这个名字吓到&#xff0c;觉得很难&#xff0c;实际上确实有点难&#xff0c;但是…

算力云平台

先预热下 目标&#xff1a; 算力互联&#xff0c;随需随取&#xff1b;让算力化零为整&#xff0c;化整为零 场景&#xff1a; 1. 个人pc改造&#xff0c;个人算力出租&#xff0c;类似之前的jiluyou模式 2. 服务器中间商准系统集成&#xff0c;目前了解到挖矿不好弄了以后…

MVC架构简述

MVC简介 MVC 是一种非常常见且常用的分层架构&#xff0c;主要包括&#xff1b;M - mode 对象层&#xff0c;封装到 domain 里。V - view 展示层&#xff0c;但因为目前都是前后端分离的项目&#xff0c;几乎不会在后端项目里写 JSP 文件了。C - Controller 控制层&#xff0c…

qt安装历史版本5.15.2

0 背景 因为需要&#xff0c;所以需要安装qt5的最后一个版本qt5.15.2&#xff0c;但是下载qt安装器后&#xff0c;发现没有想要的版本。后面才发现&#xff0c;可以筛选历史版本进行安装。 1 解决 1&#xff0c;打开qt安装程序&#xff0c;勾选Archive后&#xff0c;点击筛选…

【简洁易学】TypeScript 学习笔记

文章目录 TypeScript学习笔记一、TS简介1. 学习前提2. TypeScript是什么&#xff1f;3. TypeScript增加了什么&#xff1f; 二、TS开发环境搭建1. 下载、安装Node.js2. npm安装TypeScript3. 创建一个TS文件&#xff0c;使用tsc对TS文件进行编译 三、TS的类型1. 类型声明2. 类型…

技术不爱听:可视化大屏难点不在于制作过程,而是做成什么样

制作可视化大屏的是一个技术活&#xff0c;需要掌握一定的前端技术和数据可视化技术&#xff0c;例如HTML、CSS、JavaScript、Canvas、SVG、three.js、甚至还涉及到建模、BIM、GIS等等。 但是&#xff0c;仅仅掌握这些技术并不足以制作出一个好的可视化大屏&#xff0c;更重要的…

js逆向进阶篇-某团酒店

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,如有侵权,可联系本文作者删除! 案例分析: 先来看看请求中有哪些参数是需要我们逆向,如下: mtgsig、fp、roh…

数据结构与算法-抽象数据类型ADT系列

以前在学习数据结构的时候做实验&#xff0c;老师要求用ADT抽象数据类型来写这些实现代码。后面也要复习数据结构&#xff0c;在这里就先放下链接。不过以前学习的时候使用的编程语言是C&#xff0c;里面会用到很多指针。现在编代码过程大多数时候都是用Java。不过思路应该还是…

C# WinForm —— 09 标签、文本框、按钮控件

标签 Label 一般显示不能编辑的文本或图像 常用属性、事件&#xff1a; 属性用途(Name)标签对象的ID&#xff0c;在代码里引用标签的时候会用到,一般以 lbl 开头Text设置或获取 界面上显示的 文本信息Image显示图像ImageList图像集&#xff0c;通常和 ListView ToolStrip Tre…

MS17-010---利用“永恒之蓝”漏洞攻击 win7主机

免责声明:本文仅做技术交流与学习.... 目录 一.前置知识 1.何为永恒之蓝&#xff1f; 2.什么是SMB协议&#xff1f; 3.SMB工作原理是什么&#xff1f; 二、实验环境 三、实验步骤 nmap扫描 msf一把梭哈 shell执行命令 远程连接 一&#xff0e; 二&#xff0e; 一.前…

C++常用的输入输出方法(ACM模式)

文章目录 前言一、输入输出方法1、cin2、getline()3、getchar() 二、算法案例1、一维数组1.1 输入固定长度1.2长度不固定 2、固定二维数组3、以非空格隔开的元素输入3、常见数据结构定义以及输入3.1 链表 前言 C中的输入输出函数有很多&#xff0c;我们本章只针对大部分算法题…

vue +antvX6 根据节点与线,动态设置节点坐标生成流程图

需求 vue2 antvX6完成流程图&#xff0c;但只有节点与线&#xff0c;没有节点的坐标&#xff0c;需要根据节点的顺序显示流程图。 需求&#xff1a; 1.根据数据动态生成对应的节点与线&#xff1b; 2.节点不能重叠&#xff1b; 3.节点与线可拖拽&#xff1b; 4.因为线存在重…

渗透之sql注入联合查询的注入

sql注入产生的原因&#xff1a; 由于程序过滤不严谨&#xff0c;导致用户有一些异常输入&#xff0c;最终触发数据库的查询。所以会出现sql注入这个问题。有些恶意的人就会利用这些信息导致数据库泄露。 注意&#xff1a;一般我们存在注入点我们会查询管理员的账号和密码&#…