【密码学】BUUCTF Crypto 1 - 12 题 WriteUp

在这里插入图片描述

今天,我在 BUUCTF 网站的 crypto section 开启了一场充满挑战的密码学之旅。

这次我一口气完成了 12 个板块的任务,虽然耗时较长,但每一次解密成功的瞬间都让我无比满足,那种沉浸在密码世界里的感觉真的很棒。

接下来,我想和大家分享一下我的解题经历,希望能给密码学爱好者尤其是新手们一些启发和帮助。


一、任务概况

本次任务涵盖了多种密码类型,如 Base64 编码、MD5、Url 编码、摩丝密码、变异凯撒密码等,共 12 个板块,每个板块都像是一座等待攻克的城堡,充满了未知和神秘。

二、解题思路与收获

1. 一眼就解密

题目

在这里插入图片描述

给定字符串ZmxhZ3tUSEVfRkxBR19PRI9USEITX1NUUKIOR30=,解密后获得flag,需包上flag{}提交。

解题思路

在这里插入图片描述

观察字符串特征,疑似Base64编码。

解题步骤

在这里插入图片描述

使用Base64解码工具对字符串进行解码,得到flag{THE_FLAG_OF_THIS_STRING},提交成功。

在这里插入图片描述

2. MD5

题目

在这里插入图片描述

已知MD5值27120bd8 - e...,求原始字符串作为flag提交。

解题思路

在这里插入图片描述

利用在线MD5破解工具,尝试各种可能的组合。

解题步骤

在这里插入图片描述

通过CMD5等在线工具,找到原始字符串为admin1,提交flag{admin1}成功。

3. Url编码

题目

在这里插入图片描述

给出Url编码字符串%66%6c%61%67%7b%61%6e%64%2031%3d31%7d,求flag。

解题思路

在这里插入图片描述

根据Url编码特征,使用编码转换工具进行解码。

解题步骤

在这里插入图片描述

使用CaptfEncoder V2工具进行Url解码,得到flag{and 1=1},提交正确。

4. 看我回旋踢

题目

在这里插入图片描述

一个压缩包1784aa2b - cfcb - 428e - 94..360压缩,需找到解压密码获取flag。

解题思路

分析压缩包名称和提示信息,尝试常见密码组合。

解题步骤

在这里插入图片描述
经过多次尝试,找到解压密码,解压后得到flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1},提交成功

5. 摩丝

题目

在这里插入图片描述

解题思路

在这里插入图片描述

查阅摩丝密码编码规则,对照解码。

解题步骤

在这里插入图片描述

根据摩丝密码规则,逐个字符解码,得到flag{ILOVEYOU},提交正确。

6. password

题目

在这里插入图片描述
在这里插入图片描述

已知姓名为张三,生日19900315,key格式为key(xxxxxxxxxx),求flag。

解题思路

在这里插入图片描述

按照题目要求,根据给定信息生成key。

解题步骤

根据格式要求,生成flag{zs19900315}并提交成功。
在这里插入图片描述


在这里插入图片描述

7. 变异凯撒

题目

在这里插入图片描述

加密密文af2_r9VYfScOeO_UL RWUC,加密类型为变异凯撒,求flag。

解题思路

在这里插入图片描述

  1. 找出密文字符的ASCII码值,如a - > 97f - > 102等。
  2. 分析对应关系,得出加密规则:从第一个字母开始,每对一位字母进行加密,偏移量依次增加1(偏移量从5开始)。
  3. 编写Python代码实现解密。

解题步骤

编写代码如下:

txt = 'afZ_r9VYfScOe0_UL RWUc'
j = 5
for i in txt:print(chr(ord(i) + j), end='')j += 1

运行代码得到flag{Caesar_variation},提交成功。
在这里插入图片描述

8. Quoted-printable

题目

在这里插入图片描述

给出编码字符串=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6,求flag。

解题思路

在这里插入图片描述

使用在线的Quoted-printable编码转换工具进行解码。

解题步骤

在这里插入图片描述

利用在线工具解码,得到flag{那你也很棒哦},提交正确。

9. 篱笆墙的影子

题目

在这里插入图片描述星星还是那颗星星哟月亮还是那个月亮山也还是那座山哟梁 也还是那道梁碾子是碾子缸是缸哟爹是爹来娘是娘麻油灯呵 还吱吱响点的还是那么丁点亮哦哦,求flag。
在这里插入图片描述

解题思路

  1. 仔细阅读文本,寻找隐藏规律。
    在这里插入图片描述

  2. 尝试对文本进行处理,如移除标点符号等操作。
    在这里插入图片描述

解题步骤

在这里插入图片描述

通过移除标点符号等操作,得到flag{wethinkwehavethefag},提交成功(但此处可能存在不准确,根据文本信息可能还有其他解读方式)。

10. Rabbit

题目

在这里插入图片描述

给出加密字符串U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI,求flag。

解题思路

在这里插入图片描述

使用相关Rabbit解密工具。

解题步骤

在这里插入图片描述

通过网站https://tool.iitang.com/tools/base_rabbitencrypt进行解密,得到flag{Cute_Rabbit},提交成功。

11. RSA

题目

在这里插入图片描述

在一次RSA密钥对生成中,假设p = 473398607161q = 4511491e = 17,求解出d作为flag提交(格式为flag{})。

解题思路

  1. 根据RSA算法原理,计算φ(n),其中φ(n)=(p - 1)(q - 1)
  2. 使用扩展欧几里得算法计算d,使得de ≡ 1 (mod φ(n))

解题步骤

编写Python代码如下:

from math import gcd# 定义扩展欧几里得算法
def extended_gcd(a, b):if b == 0:return a, 1, 0g, x1, y1 = extended_gcd(b, a % b)x = y1y = x1 - (a // b) * y1return g, x, y# 输入数据
p = 473398607161
q = 4511491
e = 17# 计算φ(n)
phin = (p - 1) * (q - 1)# 计算d
g, d, _ = extended_gcd(e, phin)
d = d % phin  # 保证d为正数print(f"私钥d: {d}")

在这里插入图片描述

运行代码得到d = 125631357777427553,提交flag{125631357777427553}成功。
在这里插入图片描述

12. 丢失的MD5

题目

在这里插入图片描述
通过代码暴力破解找到满足特定条件的字符串的MD5值,条件为MD5值中包含e9032da911513
在这里插入图片描述
在这里插入图片描述

解题思路

  1. 编写代码,使用三重循环遍历所有可能的字符组合。
  2. 计算每个组合的MD5哈希值,并检查是否满足条件。

解题步骤

改进后的代码如下:

import hashlib# 定义子串条件
target_substrings = ['e9032', 'da', '911513']# 遍历所有可能的字符组合
for i in range(32, 127):for j in range(32, 127):for k in range(32, 127):# 构造字符串candidate = f"TASC{chr(i)}03RMV{chr(j)}WDJKX{chr(k)}ZM"# 计算MD5哈希m = hashlib.md5()m.update(candidate.encode('utf-8'))md5_hash = m.hexdigest()# 检查是否满足所有条件if all(sub in md5_hash for sub in target_substrings):print(f"Found:{candidate},MD5:{md5_hash}")

运行代码得到Found:TASCJ03RJMVKWDJKXLZM,MD5:e9032994dabac08080091151380478a2

在这里插入图片描述

提交flag{e9032994dabac08080091151380478a2}成功。


我的心得总结 💪💪💪

在这里插入图片描述
这次 BUUCTF 的 crypto section实操,对我来说不仅仅是一次解题的过程,更是一次成长和学习的机会。

在这个过程中,我遇到了各种各样的困难,但每一次克服困难后的成就感都让我更加坚定了继续探索密码学世界的决心。

对于新手来说,密码学可能看起来很复杂、很神秘,但只要你有一颗热爱学习的心,勇于尝试,不怕失败,就一定能够逐渐掌握密码学的奥秘。

每一次的解题都是一次积累经验的过程,每一次的错误都是一次成长的机会。就像我这次完成 12 个板块的任务一样,虽然用时较长,但在这个过程中我学到了很多知识和技能,也收获了满满的成就感。

希望我的分享能够给大家带来一些鼓励和启发,让我们一起在密码学的道路上不断前行,探索更多的未知领域!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/488752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云和恩墨 zCloud 与华为云 GaussDB 完成兼容性互认证

近日,云和恩墨(北京)信息技术有限公司(以下简称:云和恩墨)的多元数据库智能管理平台 zCloud 与华为云计算技术有限公司(以下简称:华为云)的 GaussDB 数据库完成了兼容性互…

FPGA开发verilog语法基础3

文章目录 主体内容1 模块的结构与调用2 语句2.1 结构语句2.1.1 initial语句2.1.2 always语句 2.2 赋值语句2.2.1 阻塞赋值()2.2.2 非阻塞赋值(<) 2.3 条件语句2.3.1 if 语句2.3.2 case 语句 3 状态机3.1 状态空间定义3.2 状态跳转3.3 下个状态判断3.4 各个状态下的动作3.5 状…

复原IP地址 什么是运算符重载? 如何在 C++ 中进行运算符重载?运算符重载在面向对象编程中的好处是什么?getline方法

getline方法 getline 是一个强大的函数&#xff0c;主要用于从输入流中按行读取数据或基于自定义分隔符提取字符串。它是 C 标准库的一部分&#xff0c;定义在头文件 <string> 中。 语法 std::getline(istream& input, std::string& str);input&#xff1a;输…

基于Springboot企业oa管理系统【附源码】

基于Springboot企业oa管理系统 效果如下&#xff1a; 系统主页面 用户管理页面 公告信息管理页面 客户关系管理页面 车辆信息管理页面 工资信息管理页面 文件信息管理页面 上班考勤管理页面 研究背景 随着信息化时代的到来和企业OA管理理念的更新&#xff0c;企业面临着日益…

学习记录:js算法(一百二十三):不同路径 II

文章目录 不同路径 II思路一 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物…

[工具升级问题] 钉钉(linux版)升级带来的小麻烦

本文由Markdown语法编辑器编辑完成。 1. 背景: 今日钉钉又发布了新的升级版本。由于我工作时使用的是Ubuntu 20.04版本&#xff0c;收到的升级推送信息是&#xff0c;可以升级到最新的7.6.25-Release版本。根据钉钉官方给出的历次更新版说明&#xff0c;这个新的版本&#xf…

3.22SQL查询

实体完整性是数据库设计中的一个概念&#xff0c;指的是确保数据库中每个实体&#xff08;表&#xff09;在逻辑上是完整和一致的状态。它涉及到定义和强制执行一些规则和约束&#xff0c;以确保数据的完整性和准确性。 实体完整性通常通过以下方式来实现&#xff1a; 1. 主键…

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句&#xff08;魔法效果挂接&#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后&#xff0c;实现传送逻…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 单图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 单图推理 flyish 输入 输出 [‘这是一幅中国传统山水画&#xff0c;描绘了一座高耸的山峰&#xff0c;周围环绕着树木和植被。画面下方有一片开阔的田野&#xff0c;远处的山峦在薄雾中若隐若现。画面上方有几行书法…

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/144353087 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 VLMEva…

心觉:个人成长的密码,牛顿和量子力学已给出

Hi&#xff0c;我是心觉&#xff0c;带你用潜意识化解各种焦虑、内耗&#xff0c;建立无敌自信&#xff1b;教你财富精准显化的实操方法&#xff1b;关注我,伴你一路成长&#xff01; 每日一省写作258/1000天 在探索个人成长的奥秘时&#xff0c;你可曾想过&#xff0c;那些看似…

电子商务人工智能指南 5/6 - 丰富的产品数据

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

JS进阶DAY3|事件(三)事件委托

目录 一、事件委托 1.1 概念 1.2 代码示例 二、tab栏切换案例 一、事件委托 1.1 概念 事件委托是一种在JavaScript中常用的技术&#xff0c;它利用了DOM事件冒泡的原理。事件冒泡是指当在DOM树中较低层次的元素上发生事件时&#xff0c;这个事件会向上冒泡到更高层次的元素…

Y3编辑器文档4:触发器1(对话、装备、特效、行为树、排行榜、不同步问题)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器&#xff08;在游戏内对新的事件进行注册&#xff09;2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…

LoRA:低秩分解微调与代码

传统的微调&#xff0c;即微调全量参数&#xff0c;就是上面的公式&#xff0c;但是我们可以通过两个矩阵&#xff0c;来模拟这个全量的矩阵&#xff0c;如果原来的W是(N * N)维度&#xff0c;我们可以通过两个(N * R) 和 (R * N)的矩阵矩阵乘&#xff0c;来模拟微调的结果。 …

鸿蒙系统-前端0帧起手

鸿蒙系统-前端0帧起手 先search 一番 找到对应的入门文档1. 运行项目遇到问题 如下 &#xff08;手动设计npm 的 registry 运行 npm config set registry https://registry.npmjs.org/&#xff09;2.运行后不支持一些模拟器 配置一下&#xff08;如下图&#xff0c;运行成功&am…

Java面试之实现多线程(二)

此篇接上一篇Java面试之什么是多线程(一) Java多线程是Java语言中的一个重要特性&#xff0c;它可以实现并发处理、提高程序的性能和响应能力。开发者需要了解多线程的概念和机制&#xff0c;并采用合适的多线程编程模型和同步机制&#xff0c;以保证程序的正确性和稳定性。Jav…

酒店/电影推荐系统里面如何应用深度学习如CNN?

【1】酒店推荐系统里面如何应用CNN&#xff1f;具体过程是什么 在酒店推荐系统中应用卷积神经网络&#xff08;CNN&#xff09;并不是一个常见的选择&#xff0c;因为 CNN 主要用于处理具有空间结构的数据&#xff0c;如图像、音频和某些类型的序列数据。然而&#xff0c;在某…

三、nginx实现lnmp+discuz论坛

lnmp l&#xff1a;linux操作系统 n&#xff1a;nginx前端页面 m&#xff1a;mysql数据库&#xff0c;账号密码&#xff0c;数据库等等都保存在这个数据库里面 p&#xff1a;php——nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#…

03篇--二值化与自适应二值化

二值化 定义 何为二值化&#xff1f;顾名思义&#xff0c;就是将图像中的像素值改为只有两种值&#xff0c;黑与白。此为二值化。 二值化操作的图像只能是灰度图&#xff0c;意思就是二值化也是一个二维数组&#xff0c;它与灰度图都属于单信道&#xff0c;仅能表示一种色调…