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

某次热身赛re方向wp

base64,只不过换了一个表,没有任何包装,这个总能做了吧

int __fastcall main(int argc, const char **argv, const char **envp) { int flag_len; // [rsp+4h] [rbp-2Ch] char *encoded; // [rsp+8h] [rbp-28h] char flag[24]; // [rsp+10h] [rbp-20h] BYREF unsigned __int64 v7; // [rsp+28h] [rbp-8h] v7 = __readfsqword(0x28u); read(0, flag, 0x15u); flag_len = strlen(flag); encoded = (char *)malloc(4 * flag_len / 3 + 4); if ( encoded ) { base64_custom_encode((const unsigned __int8 *)flag, flag_len, encoded); if ( !strcmp(encoded, "zNoHvOEJwug8z9sH0NQH0NQH0NQU") ) puts("success"); else puts("fail"); free(encoded); return 0; } else { fwrite("malloc failed\n", 1u, 0xEu, stderr); return 1; } }

看到base64_custom_encode函数

void __cdecl base64_custom_encode(const unsigned __int8 *input, int len, char *output) { int v3; // eax int v4; // eax int v5; // eax int i; // [rsp+1Ch] [rbp-Ch] int j; // [rsp+20h] [rbp-8h] unsigned int triple; // [rsp+24h] [rbp-4h] unsigned int triplea; // [rsp+24h] [rbp-4h] unsigned int tripleb; // [rsp+24h] [rbp-4h] i = 0; j = 0; while ( len > i + 2 ) { triple = (input[i + 1] << 8) | (input[i] << 16) | input[i + 2]; output[j] = custom_b64_table[(triple >> 18) & 0x3F]; output[j + 1] = custom_b64_table[(triple >> 12) & 0x3F]; output[j + 2] = custom_b64_table[(triple >> 6) & 0x3F]; v3 = j + 3; j += 4; output[v3] = custom_b64_table[triple & 0x3F]; i += 3; } if ( len == i + 1 ) { triplea = input[i] << 16; output[j] = custom_b64_table[(input[i] >> 2) & 0x3F]; output[j + 1] = custom_b64_table[(triplea >> 12) & 0x3F]; output[j + 2] = 61; v4 = j + 3; j += 4; output[v4] = 61; } else if ( len == i + 2 ) { tripleb = (input[i] << 16) | (input[i + 1] << 8); output[j] = custom_b64_table[(tripleb >> 18) & 0x3F]; output[j + 1] = custom_b64_table[(tripleb >> 12) & 0x3F]; output[j + 2] = custom_b64_table[(tripleb >> 6) & 0x3F]; v5 = j + 3; j += 4; output[v5] = 61; } output[j] = 0; }

再看到custom_b64_table,双击

custom_b64_table db 'XYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVW'

拿到自定义的base64编码表

直接找在线工具http://web.chacuo.net/netbasex

sdpc{rererepwnpwnpwn}

或者手搓python

STANDARD_ALPHABET = "XYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVW" def encode(data: str, alphabet: str = STANDARD_ALPHABET) -> str: result = [] for i in range(0, len(data), 3): #步长为3 chunk = data[i : i + 3] #三个一组 value = ord(chunk[0]) << 16 if len(chunk) > 1: value |= ord(chunk[1]) << 8 if len(chunk) > 2: value |= ord(chunk[2]) for j in range(4): if j < len(chunk) + 1: result.append(alphabet[(value >> (18 - j * 6)) & 0x3F]) else: result.append("=") return "".join(result) def decode(data: str, alphabet: str = STANDARD_ALPHABET) -> str: padding = data.count("=") data = data.rstrip("=") result = [] for i in range(0, len(data), 4): chunk = data[i : i + 4] value = 0 for j, c in enumerate(chunk): value |= alphabet.index(c) << (18 - j * 6) n = 4 - padding if i >= len(data) - 4 else 4 #判断是否为最后一组 for j in range(n - 1): result.append(chr((value >> (16 - j * 8)) & 0xFF)) return "".join(result) a=decode("zNoHvOEJwug8z9sH0NQH0NQH0NQU") print(a)

如果脚本或代码有看不懂的,可以用以下提示词

把这段代码当作我完全不会编程来解释:逐行说明每行代码做了什么、为什么这样做,以及整个程序的功能。用最通俗的语言,不要跳过任何基础概念,包括函数用法。

不会吧,直接给class文件还不会做吗

http://www.gsyq.cn/news/1644021.html

相关文章:

  • 9大网盘直链解析工具:开源解决方案如何提升工作效率300%
  • MySQL库与表的操作
  • 《Python + Streamlit + DeepSeek API 实现一个本地文档问答助手》
  • NVIDIA 驱动 551.86 与 CUDA 12.4 版本匹配指南:Windows 深度学习环境搭建避坑 3 要点
  • Dify低代码AI开发平台:从零部署到工作流实战全指南
  • MatAnyone:无需绿幕的AI视频抠像神器,轻松实现专业级视频背景分离
  • 达朗贝尔公式与特征线法:一维波动方程依赖区间与决定区域图解
  • CUDA 12.4 + cuDNN 8.9 环境配置:Windows/Linux 双系统 5 步验证法
  • 本地AI绘图新范式:Codex与Cowart插件实现指哪改哪交互式创作
  • 《数据库系统概论》第6版 vs 第5版:3大核心内容更新与SQL Server/Oracle 23版适配
  • 终极免费显存检测工具:5分钟找出显卡隐藏故障
  • 和也磁疗床垫实测分享,聊聊网传磁疗有效吗相关疑问
  • GESP2026年6月认证C++一级( 第一部分选择题(1-7))精讲
  • ThinkPHP、Log4j2、Spring框架漏洞深度复现与原理剖析实战指南
  • 数据库设计六步骤实战:从ER图到SQL Server表结构生成的5个关键检查点
  • SQL Server 2022 嵌套查询实战:3类子查询与连接查询性能对比分析
  • PostgreSQL 16.3 Windows 安装:3种端口冲突解决方案与 pgAdmin 4 连接测试
  • 从Viola-Jones到YOLO:目标检测20年演进中的3个关键范式转变
  • C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
  • SolidWorks_装配体设计11_间隙验证与测量
  • NumPy 与 PyTorch 矩阵运算对比:5个核心操作在 CPU/GPU 上的性能基准测试
  • HarmonyKit | 鸿蒙新特性实战:从零构建开发者工具箱
  • Proxmox VE 6.2 同机换盘迁移:3步恢复配置与4个常见启动错误排查
  • MySQL 元数据查询对比:INFORMATION_SCHEMA vs SHOW 命令 vs DESC
  • 领取Ai大模型token了
  • MySQL 单元 6 数据视图学习笔记
  • ANI-RSS元数据刮削:3步打造专业级动漫媒体库
  • 社会大洗牌的馈赠的具象化的庖丁解牛
  • SolidWorks_装配体设计14_装配体配置管理
  • Proxmox VE 6.2-4 同机换盘迁移:3步恢复配置与4类启动报错排查