BUUCTF(34)特殊的 BASE64

2024-09-09 08:20
文章标签 buuctf 特殊 34 base64

本文主要是介绍BUUCTF(34)特殊的 BASE64,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z

如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了

BUUCTF在线评测 (buuoj.cn)

查看字符串,想到base64的变表

这里用的c++的标准程序库中的string,头文件是#include<string>

这是base64的加密函数

std::string __cdecl base64Encode(std::string *p_decode)
{std::string *v1; // rdxchar *v2; // raxint v3; // ebxchar *v4; // raxint v5; // ebxchar *v6; // rax_BYTE *v7; // raxchar *v8; // rax_BYTE *v9; // raxchar *v10; // raxint v11; // ebxchar *v12; // rax_BYTE *v13; // rax__int64 v15; // [rsp+0h] [rbp-80h] BYREFint pos_0; // [rsp+30h] [rbp-50h]int pos; // [rsp+34h] [rbp-4Ch]int len; // [rsp+38h] [rbp-48h]int i; // [rsp+3Ch] [rbp-44h]std::string *p_decodea; // [rsp+68h] [rbp-18h]p_decodea = v1;std::allocator<char>::allocator(&v15 + 47);std::string::string(p_decode, &unk_489084);std::allocator<char>::~allocator();len = std::string::length(p_decodea);for ( i = 0; len / 3 > i; ++i ){v2 = std::string::operator[](p_decodea, 3 * i);std::string::operator[](&baseKey, *v2 >> 2);std::string::operator+=(p_decode);v3 = 16 * (*std::string::operator[](p_decodea, 3 * i) & 3);v4 = std::string::operator[](p_decodea, 3 * i + 1);std::string::operator[](&baseKey, v3 | (*v4 >> 4));std::string::operator+=(p_decode);v5 = 4 * (*std::string::operator[](p_decodea, 3 * i + 1) & 0xF);v6 = std::string::operator[](p_decodea, 3 * i + 2);std::string::operator[](&baseKey, v5 | (*v6 >> 6));std::string::operator+=(p_decode);v7 = std::string::operator[](p_decodea, 3 * i + 2);std::string::operator[](&baseKey, *v7 & 0x3F);std::string::operator+=(p_decode);}if ( len % 3 == 1 ){pos = 3 * (len / 3);v8 = std::string::operator[](p_decodea, pos);std::string::operator[](&baseKey, *v8 >> 2);std::string::operator+=(p_decode);v9 = std::string::operator[](p_decodea, pos);std::string::operator[](&baseKey, 16 * (*v9 & 3));std::string::operator+=(p_decode);std::string::operator+=(p_decode, "==");}if ( len % 3 == 2 ){pos_0 = 3 * (len / 3);v10 = std::string::operator[](p_decodea, pos_0);std::string::operator[](&baseKey, *v10 >> 2);std::string::operator+=(p_decode);v11 = 16 * (*std::string::operator[](p_decodea, pos_0) & 3);v12 = std::string::operator[](p_decodea, pos_0 + 1);std::string::operator[](&baseKey, v11 | (*v12 >> 4));std::string::operator+=(p_decode);v13 = std::string::operator[](p_decodea, pos_0 + 1);std::string::operator[](&baseKey, 4 * (*v13 & 0xF));std::string::operator+=(p_decode);std::string::operator+=(p_decode, "=");}return p_decode;
}

脚本直接出

一个base64的简单变表,但是是用string标准库函数写的

这篇关于BUUCTF(34)特殊的 BASE64的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

Java文件与Base64之间的转化方式

《Java文件与Base64之间的转化方式》这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者... 目录Java文件与Base64之间的转化1、文件转Base64工具类2、Base64转文件工具类3、

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

特殊JSON解析

一般的与后台交互;都会涉及到接口数据的获取;而这里的数据一般情况就是JSON 了;JSON 解析起来方便;而且数据量也较小一些;所以JSON在接口数据返回中是个很不错的选择。 下面简单说下JSON解析过程中的一些案例: 这里我用到了三方的架包:fastjson-1.1.39.jar 架包 可以在我的博客中找到下载;或者网上找下 很多的; 这里主要就是映射  关系了;这就要求:实体类的名称和

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

『功能项目』武器的切换实例【34】

本章项目成果展示 我们打开上一篇33战士的A键连击的项目, 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos (注意调整空物体位置就可以后续文章会更换武器) 隐藏两把武器 运行项目 隐藏装备 在资源商店

广东省特殊食品生产试题分享

1.食品污染是指在各种条件下,导致有毒有害物质进入到食物中,造成以下哪项发生转变的过程。(D) A.食品的安全性 B.食品的养分性 C.食品的感官性状 D.以上都是 2.食品污染物是指(D) A.生物性污染物 B.化学性污染物 C.物理性污染物 D.以上都是 3.关于菌落总数的表达,错误的选项是(A) A.反映食品对人体安康的危害程度 B.是食品清洁状态的标志 C.推测食品的耐保藏性 D.指1g检