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

[SWPUCTF 2021 新生赛]crypto解题思路

题目来源

NSSCTF | 在线CTF平台

 [SWPUCTF 2021 新生赛]crypto6

WriteUp

打开txt后如下

可以发现是base64、base64、base64逆解码

或者是base16、base32、base64逆解码

方法如下

Base64解码

1.首先将十六进制编码的字符串解码为二进制数据。

2.然后将Base32编码的字符串解码为二进制数据。

3.最后将Base64编码的字符串解码为二进制数据。

脚本如下:

import base64

res = '4A5A4C564B36434E4B5241544B5432454E4E32465552324E47424758534D44594C4657564336534D4B5241584F574C4B4B463245365643424F35485649534C584A5A56454B4D4B5049354E47593D3D3D'

# 首先将十六进制编码的字符串解码为二进制数据
decoded_hex = base64.b16decode(res)

# 然后将Base32编码的字符串解码为二进制数据
decoded_b32 = base64.b32decode(decoded_hex)

# 最后将Base64编码的字符串解码为二进制数据
decoded_b64 = base64.b64decode(decoded_b32)

# 将解码后的数据格式化为特定字符串并打印
print(b'NSSCTF{' + decoded_b64 + b'}')

[SWPUCTF 2021 新生赛]crypto7

WriteUp

这个题打开txt后发现是md5,这里大家了解一下MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够生成128位(16字节)的哈希值,通常以32位十六进制数表示。这里发现txt里面的内容是md5我使用md5在线解密破解,md5解密加密创立18年的md5解密网站,支持md5解密,sha1解密等多种类型实时解密和破解。数据库大,使用3PB硬盘仓库。成功率高,如果本站解密不了,那就没有办法了。icon-default.png?t=O83Ahttps://www.cmd5.com/

[SWPUCTF 2021 新生赛]crypto8

WriteUp

这个题打开txt后随波逐流爆破就行

 

[SWPUCTF 2021 新生赛]ez_caesar 

WriteUp 

打开py后有一个凯撒密码的加密函数 caesar, base64 编码的字符串 U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ==

这里给大家讲一下base64

Base64的原理

  1. 数据分块:将输入的二进制数据分成每块3个字节(24位)。
  2. 转换为字符:每个24位的块被分成4个6位的组。每个6位的组可以表示一个0到63之间的数字。
  3. 查找字符:使用一个Base64字符集(通常是A-Z, a-z, 0-9, +, /)将这些数字转换为对应的字符。
  4. 填充:如果输入数据的字节数不是3的倍数,Base64会用“=”字符进行填充,以确保输出的长度是4的倍数。

凯撒密码(Caesar Cipher)是一种简单的替换加密算法,以古罗马将领尤利乌斯·凯撒的名字命名。它通过将字母表中的每个字母替换为其后面固定位置的字母来加密信息。凯撒密码的原理简单易懂,适合初学者学习密码学的基本概念。

凯撒密码的原理

  1. 字母表偏移:选择一个固定的偏移量(通常称为“密钥”),例如3。然后将字母表中的每个字母向后移动这个偏移量。例如,字母“A”会变成“D”,字母“B”会变成“E”,依此类推。

  2. 加密过程

    • 将明文中的每个字母替换为偏移后的字母。
    • 如果字母超出了字母表的范围,则从字母表的开头继续。例如,字母“Z”在偏移3后会变成“C”。
  3. 解密过程

    • 使用相同的偏移量,将加密后的字母向前移动相同的位数,以恢复原始明文。

 有两种解法:

第一种:base64跟凯撒两个直接在随波逐流解就行

第二种 :根据题目写py脚本,我在vs code执行的脚本,大家可以在扩展中添加python

脚本如下:

import base64

# 解码 base64 字符串
encoded_str = "U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="
decoded_bytes = base64.b64decode(encoded_str)
decoded_str = decoded_bytes.decode('utf-8')

print(decoded_str)
def caesar_decrypt(ciphertext, shift=5):
    str_list = list(ciphertext)
    i = 0
    while i < len(ciphertext):
        if not str_list[i].isalpha():
            str_list[i] = str_list[i]
        else:
            a = "A" if str_list[i].isupper() else "a"
            str_list[i] = chr((ord(str_list[i]) - ord(a) - shift) % 26 + ord(a))
        i = i + 1

    return ''.join(str_list)

# 解码 base64 字符串
encoded_str = "U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="
decoded_bytes = base64.b64decode(encoded_str)
decoded_str = decoded_bytes.decode('utf-8')

# 解密凯撒密码
decrypted_str = caesar_decrypt(decoded_str)
print(decrypted_str)

 运行后解出NSSCTF


http://www.kler.cn/a/291805.html

相关文章:

  • 【SQL】mysql常用命令
  • 【数据结构与算法】查找
  • RabbitMQ 在 Java 和 Spring Boot 中的应用详解
  • JavaScript中如何使用Promise处理异步操作?
  • Win10/11 安装使用 Neo4j Community Edition
  • 平台整合是网络安全成功的关键
  • Redis主从复制原理,设计的很巧妙
  • IP/TCP/UDP协议的关键知识点
  • 2024年高教社杯全国大学生数学建模竞赛B题思路(2024数学建模国赛B题思路)
  • adb remount Now reboot your device for settings to take effect
  • DS18B20温度传感器详解(STM32)
  • 鸿蒙OS试题(2)
  • 【#第三期实战营闯关作业##LMDeploy 量化部署进阶实践 】
  • MySQL 字符串操作详解和案例示范
  • vue ts as断言处理
  • 自定义 ConsoleAppender 实现日志预处理
  • tcp如何保证可靠性传输
  • 数据资产入表元年,企业如何抓住数据资产增值的机遇?
  • 核心交换机的六个基础知识
  • 智慧体育馆如何区别于传统场馆?
  • 选择高性能服务器租用的优势有哪些?
  • vulhub xxe靶机通关教程
  • 编译FFmpeg动态库
  • 深入Redis:事务的理解
  • 【机器学习-神经网络】卷积神经网络
  • antv x6 的画布大小设置