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

Day 1 BUUCTF——特殊的 BASE64 1

选择BUUCTF平台,因为题目丰富、难度低,适合入门。
首先,需要注册一个账号,然后就可以答题了。
第一题 特殊的 BASE64 1
0x1 下载题目附件

在这里插入图片描述

0x2 用Exeinfo PE 查壳
在这里插入图片描述
发现未加壳。

0x3 运行一下看看程序的功能
在这里插入图片描述
输入任意字符后程序直接退出,推断可能是判断输入的Base64是否和某特定值相同,不相同程序就退出。

0x4 使用IDA Pro 64位版本打开该程序文件,找到main函数,使用F5快捷键反编译生成伪代码。
在这里插入图片描述
发现第14行的"rightFlag“:mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==,像是经Base64加密后的字符串。

0x5 尝试base64解码,得到结果:
在这里插入图片描述
这并非可识别的flag。

0x6 重新查看main函数的行为,发现函数base64Encode对result的数据进行了加密。
进入base64Encode函数,发现自定义加密字典:
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+,与常规的字典不同。

0x7 使用该字典对前面的字符串解码,得到:
在这里插入图片描述
PS:现在有一个疑问:&result的值如何与标准输入相关联?
答案:使用x64dbg动态调试,发现在这个语句
std::operator>><char,std::char_traits,std::allocator>(refptr__ZSt3cin, &str);
执行后,result和str指向的内存相同,故Base64Decode(&result)就是将标准输入的内容作为函数的输入。
解完。

相关文章:

  • 大数据分析案例-用RFM模型对客户价值分析(聚类)
  • Linux入门之管理 Wi-Fi 连接
  • 结构体作业等
  • ARM架构种类
  • 【牛客刷题-算法】NC16 对称的二叉树
  • MATLAB算法实战应用案例精讲-【回归算法】XGBoost算法(附Java、Python和R语言代码)
  • 基于java春晓学堂管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • 通关率不到0.1%的小游戏《羊了个羊》为什么这么火?
  • [架构之路-7]:架构师 - 嵌入式硬件架构师的工作内容和工作要求是什么
  • 【javaweb简单教程】3.使用JDBC操作数据库(含简单示例完整代码)
  • 【uiautomation】微信群发消息,获取群通讯录名单
  • 「数据结构详解·八」带权并查集 扩展域并查集
  • 【SQL刷题】DAY21----SQL组合查询专项练习
  • 解决使用Lambda分组后,每组多条数据处理
  • 商业地产如何走出高空置率困局?
  • 【comparator, comparable】小总结
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Redis学习笔记 - pipline(流水线、管道)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • tensorflow学习笔记3——MNIST应用篇
  • TypeScript迭代器
  • 彻底搞懂浏览器Event-loop
  • 二维平面内的碰撞检测【一】
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 软件开发学习的5大技巧,你知道吗?
  • 详解NodeJs流之一
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 栈实现走出迷宫(C++)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​Linux·i2c驱动架构​
  • ​Python 3 新特性:类型注解
  • ​VRRP 虚拟路由冗余协议(华为)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • ${ }的特别功能
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C)一些题4
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)丶RabbitMQ的六大核心
  • (四)JPA - JQPL 实现增删改查
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET MVC第三章、三种传值方式
  • .Net Remoting常用部署结构
  • .NET正则基础之——正则委托
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ C++ ] STL---stack与queue