当前位置: 首页 > news >正文

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)

文件无壳 拖入IDA中

shift+F12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码

进入主函数看看

这段代码是一个简单的 C 语言程序,主要功能是接受用户输入的字符串作为“flag”,然后通过对输入的字符串进行一些处理和比较来验证是否输入了正确的“flag”。

继续跟进sub_401770函数

这段代码是一个 Base64 编码函数,用于将输入的字符串进行 Base64 编码处理。下面是代码的主要逻辑:

  1. 计算输入字符串的长度:v6 = strlen(a1);
  2. 根据输入字符串长度取模3,得到余数 v7
  3. 根据余数的不同情况,计算 Base64 编码后的字符数组长度 v8
  4. 根据长度分配内存,并将分配的内存初始化为0。
  5. 将输入的字符串按照 Base64 编码规则转换为对应的 Base64 字符。
  6. 处理剩余字节,补充等号。
  7. 将处理后的 Base64 编码后的字符数组地址赋值给 a2
  8. 返回结果。
__int64 __fastcall sub_401570(const char *a1, _QWORD *a2, int *a3)
{int v6; // r15dint v7; // r12dint v8; // r13d__int64 v9; // r14_BYTE *v10; // rax_BYTE *v11; // r9__int64 v12; // r8char v13; // clchar v14; // r11char v15; // r10__int64 result; // raxv6 = strlen(a1);                              // 计算输入字符串的长度v7 = v6 % 3;if ( v6 % 3 ){v8 = 4 * (v6 / 3) + 4;v9 = v8;v10 = malloc(v8 + 1i64);v10[v8] = 0;if ( v6 <= 0 )goto LABEL_5;}else{v8 = 4 * (v6 / 3);v9 = v8;v10 = malloc(v8 + 1i64);v10[v8] = 0;if ( v6 <= 0 )goto LABEL_8;}v11 = v10;v12 = 0i64;do{v11 += 4;v13 = a1[v12];*(v11 - 4) = aQvejafhmuyjbac[v13 >> 2];v14 = a1[v12 + 1];*(v11 - 3) = aQvejafhmuyjbac[(v14 >> 4) | (16 * v13) & 0x30];v15 = a1[v12 + 2];v12 += 3i64;*(v11 - 2) = aQvejafhmuyjbac[(v15 >> 6) | (4 * v14) & 0x3C];*(v11 - 1) = aQvejafhmuyjbac[v15 & 0x3F];}while ( v6 > (int)v12 );
LABEL_5:if ( v7 == 1 ){v10[v9 - 2] = 61;v10[v9 - 1] = 61;}else if ( v7 == 2 ){v10[v9 - 1] = 61;}
LABEL_8:*a2 = v10;result = 0i64;*a3 = v8;return result;
}

简而言之 这是一个简单的变种base64编码

写出脚本

import base64# Base64 编码的字符串
str1 = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8=="str2 = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD"
str3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"a = str.maketrans(str2, str3)
b = str1.translate(a)# 解码 Base64 编码的字符串并打印结果
decoded_text = base64.b64decode(b).decode('utf-8')
print(decoded_text)

得到flag

NSSCTF{a8d4347722800e72e34e1aba3fe914ae}

相关文章:

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)

文件无壳 拖入IDA中 shiftF12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码 进入主函数看看 这段代码是一个简单的 C 语言程序&#xff0c;主要功能是接受用户输入的字符串作为“flag”&#xff0c;然后通过对输入的字符串进行一些处理和比较来验证是否输…...

clickhouse使用extract提取分号之前,之后,中间的内容

Area&#xff1a;‘安徽;宣城;宣州’&#xff0c;要提取分号之前&#xff0c;两个分号之前&#xff0c;最后一个分号之后的内容作为省市区 这是最后得到的正确的结果&#xff0c;感谢chatgpt 刚开始本来想使用splitByString -- 宣城 select splitByString(;,安徽;宣城;宣州)[2…...

Unity3D Compute Shader同步详解

前言 在Unity3D中&#xff0c;Compute Shader是一种强大的工具&#xff0c;它利用GPU的并行处理能力来执行复杂的计算任务&#xff0c;从而减轻CPU的负担&#xff0c;提高游戏的性能和效率。然而&#xff0c;由于GPU的工作方式&#xff0c;对共享资源的访问需要特别注意同步问…...

3D模型在UI设计中应用越来越多,给UI带来了什么?

当前3D模型在UI设计中应用很多&#xff0c;极大地拓展了UI设计的发挥空间&#xff0c;也拓宽了UI的应用领域&#xff0c;本文分享下UI中引入3D模型到底能带来什么价值. 3D模型在UI设计中的应用可以给用户界面带来以下几个方面的好处&#xff1a; 更真实的视觉体验&#xff1a;…...

前端框架的选择与考量:一场技术的盛宴

在当今快速迭代的Web开发领域&#xff0c;前端框架的选择成为了项目启动初期不可忽视的重要环节。随着React、Vue、Angular等主流框架的崛起&#xff0c;以及Svelte、Quasar等新兴力量的加入&#xff0c;开发者们面临着前所未有的选择难题。本文旨在探讨前端框架的选择依据、主…...

第五部分:7---信号的捕捉

目录 信号递达期间&#xff0c;该信号会被屏蔽直到递达完成。 sigaction实现信号的捕捉&#xff1a; 案例&#xff1a;在处理2号信号时屏蔽3号信号。 子进程退出向父进程发送SIGCHLD信号&#xff1a; 信号递达期间&#xff0c;该信号会被屏蔽直到递达完成。 当某个信号的处…...

HarmonyOS鸿蒙开发实战( Beta5.0)页面加载效果实现详解实践案例

鸿蒙HarmonyOS开发实战往期必看文章&#xff1a;&#xff08;持续更新......&#xff09; HarmonyOS NEXT应用开发性能实践总结&#xff08;持续更新......&#xff09; HarmonyOS NEXT应用开发案例实践总结合集&#xff08;持续更新......&#xff09; 一分钟了解”纯血版&…...

计算机网络中的VLAN详解

文章目录 计算机网络中的VLAN详解一、引言二、VLAN的作用与原理1、VLAN的作用2、VLAN的工作原理2.1、VLAN标签&#xff08;Tag&#xff09; 三、VLAN的配置与接口类型1、VLAN的配置2、接口类型 四、VLAN的应用场景1、企业网络2、数据中心3、教育网络 五、VLAN间的通信六、总结 …...

Nacos学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程&#xff1a;封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…...

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0926)

十四、文章分类添加编辑 [element-plus 弹层] Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 点击显示弹层 准备弹层 const dialogVisible ref(false)<el-dialog v-model"dialogVisible" title"添加弹层" width"30%">…...

验收测试:从需求到交付的全程把控!

在软件开发过程中&#xff0c;验收测试是一个至关重要的环节。它不仅是对软件质量的把关&#xff0c;也是对整个项目周期的全程把控。从需求分析到最终的软件交付&#xff0c;验收测试都需要严格进行&#xff0c;以确保软件能够符合预期的质量和性能要求。 一、需求分析阶段 在…...

第十七节 鼠标的操作与相应

知识点 -event代表鼠标事件类型 -EVENT_LBUTTONDOWN鼠标左键按下 -EVENT_LBUTTONUP鼠标左键抬起 -EVENT_LBUTTONMOVE鼠标及移动 Point sp(-1, -1); Point ep(-1, -1); Mat temp; static void on_draw(int event, int x, int y, int flags, void* userdata) { Mat imag…...

深圳·2025胶粘剂展会 BOND第六届胶展

BOND第六届胶展、2025大湾区国际胶粘剂及密封剂展览会 时间&#xff1a;2025年6月25-27日 地址&#xff1a;深圳国际会展中心&#xff08;新馆&#xff09; UV胶、快干胶、结构粘结胶、导热胶、低温黑胶、硅胶、SMT贴片红胶、底部填充胶、低温热固胶、COB黑胶、围堰填充胶、U…...

什么是网络安全自动化以及优势与挑战

目录 网络安全自动化的工作原理 网络安全自动化的好处 增强的安全功能 改善表现和姿势 降低安全成本 简化的安全合规性和审计 更好的端点管理 网络安全自动化的挑战 耗时且容易出错的安全流程 可见性降低&#xff0c;风险和成本增加 合规管理 有用的网络安全自动化…...

java中的ArrayList和LinkedList的底层剖析

引入: 数据结构的分类&#xff0c;数据结构可以分成&#xff1a;线性表&#xff0c;树形结构&#xff0c;图形结构。 线性结构(线性表)包括:数组、链表、栈队列 树形结构:二叉树、AVL树、红黑树、B树、堆、Trie、哈夫曼树、并查集 图形结构:邻接矩阵、邻接表 线性表是具有存…...

占领矩阵-第15届蓝桥省赛Scratch中级组真题第5题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第190讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…...

[论文笔记] Chain-of-Thought Reasoning without Prompting

分析: 在CoT解码路径中,我们可以看到模型在第三个位置(𝑖? = 3)开始展示推理过程,并且给出了正确的答案“8”。模型首先识别出说话者有3个苹果,然后识别出爸爸比说话者多2个,即5个苹果,最后将这两个数量相加得到总数8个苹果。 这个例子表明,通过探索替代的解码路径…...

C++八股进阶

之前那个只是总结了一下常考点&#xff0c;这个是纯手打记笔记加深理解 这里写目录标题 C的四种智能指针为什么要使用智能指针&#xff1f;四种智能指针&#xff1a; C中的内存分配情况C中的指针参数传递和引用参数传递C 中 const 和 static 关键字&#xff08;定义&#xff0…...

渗透测试--文件上传常用绕过方式

文件上传常用绕过方式 1.前端代码&#xff0c;限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改&#xff0c;抓取上传数据包&#xff0c;并且修改 Content-Type 3.服务端检测&#xff08;目录路径检测&#xff09; 对目…...

音视频生态下Unity3D和虚幻引擎(Unreal Engine)的区别

技术背景 好多开发者跟我们做技术交流的时候&#xff0c;会问我们&#xff0c;为什么有Unity3D的RTMP|RTSP播放模块&#xff0c;还有RTMP推送和轻量级RTSP服务模块&#xff0c;为什么不去支持虚幻引擎&#xff1f;二者区别在哪里&#xff1f;本文就Unity3D和虚幻引擎之间的差异…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...