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

相关文章

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检

Base64编码 及 在HTML中用Base编码直接显示图片或嵌入其他文件类型

1.为什么要用到BASE64编码的图片信息      Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下。最常见的用途是作为电子邮件或WebService附件的传输编码.  2.base64编码定义    目前的internet

批量文件编码转换用python实现的utf8转gb2312,vscode设置特殊文件的默认打开编码

批量文件编码转换用python实现的utf8转gb2312, 任意编码之间的相互转换都是可以的.改一下下面的参数即可 convert.py文件内容如下 import osimport globimport chardet#检测文件编码类型def detect_file_encoding(file_path):with open(file_path, 'rb') as f:data = f

王立平-Android中对图像进行Base64编码

// ------------------base64-------------------// public String bitmaptoString(Bitmap bitmap) { // 将Bitmap转换成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(

生信软件34 - 大幅提升Python程序执行效率的工具Pypy

在生信开发过程中,会大量使用Python脚本,除了多进程和多线程编程提高程序运行效率外,还可以借助效率更高的Python解释器来提高程序的运行速度, CPython 使用c语言实现的解释器, PyPy 使用python语言的子集RPython实现的解释器,一般情况下PyPy比CPython快4倍左右。 1. 比较解释器的运行效率 # task.pyimport timedef compute

ArcGIS Pro SDK (十三)地图创作 3 特殊图层

ArcGIS Pro SDK (十三)地图创作 3 特殊图层 文章目录 ArcGIS Pro SDK (十三)地图创作 3 特殊图层1 高程表面图层1.1 创建具有地表图层的场景1.2 创建新的高程表面1.3 将自定义高程表面设置为 Z 感知图层1.4 将高程源添加到现有高程表面图层1.5 从地图中获取高程表面图层和高程源图层1.6 查找高程表面图层1.7 移除高程表面图层1.8 从曲面获