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

特殊的 BASE64 1

 这个一看题目就是base64编码表被改了.

知识点:

Base64编码使用一个包含64个字符的字符集,这些字符分别是:

  • 大写字母A-Z
  • 小写字母a-z
  • 数字0-9
  • 特殊字符+和/

这些字符分别对应64个不同的6位二进制数。在补零后形成的8位字节中,实际使用的只有低6位。

内容为:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

例行检查,载入PE

无壳,64bit 

载入IDA(64bit)

寻找main函数.

int __fastcall main(int argc, const char **argv, const char **envp)
{std::ostream *v3; // raxstd::ostream *v4; // raxstd::string result; // [rsp+20h] [rbp-60h] BYREFstd::string rightFlag; // [rsp+30h] [rbp-50h] BYREFstd::string str; // [rsp+40h] [rbp-40h] BYREFchar v9; // [rsp+4Fh] [rbp-31h] BYREFstd::string v10; // [rsp+50h] [rbp-30h] BYREF_main();std::string::string(&str);std::allocator<char>::allocator(&v9);std::string::string(&rightFlag, "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==", &v9);std::allocator<char>::~allocator(&v9);v3 = (std::ostream *)std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Please input your flag!!!!");refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v3);std::operator>><char>(refptr__ZSt3cin, &str);std::string::string(&v10, &str);base64Encode(&result);std::string::~string(&v10);if ( std::operator==<char>(&result, &rightFlag) )v4 = (std::ostream *)std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "The flag is right!!!!!!!!!");elsev4 = (std::ostream *)std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "This is a wrong flag!!!!!!!!");refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(v4);std::string::~string(&result);std::string::~string(&rightFlag);std::string::~string(&str);return 0;
}

我们这里可以发现有一个rightflag:mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==

还有一个base64Encode(&result);,用来进行base64编码,base64编码表估计就在里面呢.

点进去看看.

找到了,开始构造exp

import base64
str1 = "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI=="
string1 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))

得到flag,游戏结束~ 


http://www.mrgr.cn/news/40276.html

相关文章:

  • AJAX JSON 实例
  • 【信创,国产化】信息化系统信创改造,国产化改造方案,云建设
  • 水果质量检测数据集 腐烂检测13个类别‘ 训练集1811 验证集514 测试集258
  • 群面技巧|无领导小组讨论发言技巧|无领导小组讨论角色|无领导小组讨论提问|秋招
  • 车辆种类分类识别数据集,可以识别7种汽车类型,已经按照7:2:1比 例划分数据集,训练集1488张、验证集507张,测试集31张, 共计2026张。
  • Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字
  • 【机器学习】任务六:分类算法(支持向量机(SVM)在线性可分与不可分数据中的应用与可视化分析)
  • XSS | XSS 常用语句以及绕过思路
  • Java | Leetcode Java题解之第449题序列化和反序列化二叉搜索树
  • 点特征直方图 (PFH) 描述符
  • Windows系统实现双网卡同时上内外网
  • C++入门基础知识93(实例)——实例18【猴子吃桃问题】
  • 详解DHCP服务工作原理及配置案例
  • 【python进阶攻略12】C扩展
  • 时域和空域去噪
  • 力扣(leetcode)每日一题 2286 以组为单位订音乐会的门票 | 线段树
  • 力扣(leetcode)每日一题 1845 座位预约管理系统| treeSet和priority Queue的区别|线段树
  • Ajax ( 是什么、URL、axios、HTTP、快速收集表单 )Day01
  • 端点安全服务:全面的端点安全解决方案
  • 多普勒频移