BaseCTF [Week2] 最简单的编码

2024-08-28 07:52
文章标签 简单 编码 week2 basectf

本文主要是介绍BaseCTF [Week2] 最简单的编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:做题笔记。

下载解压 查壳。

64ida打开。

查找字符串。

跟进。

逆着向前看。

说明是密文。

里面是base64的变异加密。

原base64关键加密:

(看BaseCTF week1  [第一周]BasePlus 官方WP)

变种后:

在此基础上加上了a4[]的值,而a4对应的是 v9(已知)

接着往上看。

sub_14001119A:

大致看着挺复杂的。

不过,没关系,我们可以去动态调试。

跟进。

说明这是对原base64表进行了换位,从而得到了一个新的base64表。

程序整体逻辑就是:

输出的字符串,用新的base64表,以及新的base64算法去进行编码,从而得到了编码后的字符。

可是,佬,思路清晰,动手能力不行怎么办?

没事,我们有豆妈。。。豆妈爱你!!!

注意,豆妈生成的解码脚本需要密文后再加一个 “=” ()

自己写的话。。。我不知道需不需要 ”=“ 

脚本:

 

newbase64 = 'CDABGHEFKLIJOPMNSTQRWXUVabYZefcdijghmnklqropuvstyzwx23016745+/89'
base64_dict = {v: k for k, v in enumerate(newbase64)}def custom_base64_decode(encoded):padding = encoded.count('=')encoded = encoded.rstrip('=')a4 = [1, 2, 3, 4]decoded = b''i = 0while i < len(encoded):if i + 3 >= len(encoded):breakv1 = base64_dict[encoded[i]]v2 = base64_dict[encoded[i + 1]] if i + 1 < len(encoded) else 0v3 = base64_dict[encoded[i + 2]] if i + 2 < len(encoded) else 0v4 = base64_dict[encoded[i + 3]] if i + 3 < len(encoded) else 0v13 = ((v1 - a4[0]) << 18) + ((v2 - a4[1]) << 12) + ((v3 - a4[2]) << 6) + (v4 - a4[3])decoded += bytes([(v13 >> 16) & 0xFF])if i + 2 < len(encoded):decoded += bytes([(v13 >> 8) & 0xFF])if i + 3 < len(encoded):decoded += bytes([v13 & 0xFF])i += 4return decoded[:-padding]encoded_string = "TqK1YUSaQryEMHaLMnWhYU+Fe0WPenqhRXahfkV6WE2fa3iRW197Za62eEaD="
print(custom_base64_decode(encoded_string).decode('utf-8', errors='replace'))

少个“ } ” O.0? 额,添上就是了。

验证:

BaseCTF{B45E64_eNCoDIn9_I5_rE4LLY_7OO_5implE}

这篇关于BaseCTF [Week2] 最简单的编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114178

相关文章

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i